diff --git a/Leptophilic_UFO.txt b/Leptophilic_UFO.txt new file mode 100644 index 0000000000000000000000000000000000000000..33a1136a8dcd49359b672714d39ba39ab56bc6f2 --- /dev/null +++ b/Leptophilic_UFO.txt @@ -0,0 +1,5 @@ +Requestor: Tiesheng Dai +Content: Leptophilic Zprime UFO model with interactions mediated by a resonance in the di-lepton channel with re-normalizable couplings. +Webpage: https://cafpe.ugr.es/index.php/pages/other/software +Paper: https://arxiv.org/pdf/1411.7394.pdf +JIRA: https://its.cern.ch/jira/browse/AGENE-1648 diff --git a/Leptophilic_UFO/Leptophilic_UFO.log b/Leptophilic_UFO/Leptophilic_UFO.log new file mode 100644 index 0000000000000000000000000000000000000000..e38bdd06eb702adfff2d72db951cbe1211e7cc10 --- /dev/null +++ b/Leptophilic_UFO/Leptophilic_UFO.log @@ -0,0 +1,82 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:00:47 + + +# +# This is the logfile for the model Leptophilic + +# Authors: J. Santiago +# Model version: 1.0 +# Checking the Quantum numbers + * Electric charge defined. +# Checking the Lagrangians + * All Lagrangians are ok. +# +# Particle definitions +# + + * No particles removed. All particles correspond to GenInt setup. + +# Automatically assigned PDG numbers + * Assigned PDG number 9000001 to particle ghA + * Assigned PDG number 9000002 to particle ghZ + * Assigned PDG number 9000003 to particle ghWp + * Assigned PDG number 9000004 to particle ghWm + * Assigned PDG number 9000005 to particle ghG + + +# Compulsory PDG codes: + * Class SM leptons complete. + * Class SM neutrinos complete. + * Class SM quarks complete. + * Class SM gauge bosons complete. +# +# Parameter definitions +# + + * All parameters are ok. + + +# Vertices + * Calling FeynmanRules for 1 Lagrangians. + * Number of classes vertices: 37 + * Number of flavored vertices: 81 + * Saved vertices in InterfaceRun[ 1 ]. + * Checked QNumber conservation. + - Quantum number GhostNumber conserved in all vertices. + - Quantum number LeptonNumber conserved in all vertices. + - Quantum number Q conserved in all vertices. + - Quantum number Y conserved in all vertices. + * particles.py written. + * parameters.py written. +# +# Vertex definitions +# + + * 81 vertices written. + * vertices.py written. +# +# Lorentz structure definitions +# + + * 18 lorentz structures written. + * lorentz.py written. +# +# Coupling definitions +# + + * 57 couplings written. + * couplings.py written. +# +# Coupling order definitions +# + + * 0 couplings orders written. + * coupling_orders.py written. +# +# Decay definitions +# + + * 13 decays written. + * decay.py not written diff --git a/Leptophilic_UFO/__init__.py b/Leptophilic_UFO/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7b6e0a5a1bfd0e557308631ee63992a9a0424aa4 --- /dev/null +++ b/Leptophilic_UFO/__init__.py @@ -0,0 +1,48 @@ + +import particles +import couplings +import lorentz +import parameters +import vertices +import coupling_orders +import write_param_card +import propagators + + +all_particles = particles.all_particles +all_vertices = vertices.all_vertices +all_couplings = couplings.all_couplings +all_lorentz = lorentz.all_lorentz +all_parameters = parameters.all_parameters +all_orders = coupling_orders.all_orders +all_functions = function_library.all_functions +all_propagators = propagators.all_propagators + +try: + import decays +except ImportError: + pass +else: + all_decays = decays.all_decays + +try: + import form_factors +except ImportError: + pass +else: + all_form_factors = form_factors.all_form_factors + +try: + import CT_vertices +except ImportError: + pass +else: + all_CTvertices = CT_vertices.all_CTvertices + + +gauge = [0] + + +__author__ = "J. Santiago" +__date__ = "5.Jun.2014" +__version__= "1.0" diff --git a/Leptophilic_UFO/coupling_orders.py b/Leptophilic_UFO/coupling_orders.py new file mode 100644 index 0000000000000000000000000000000000000000..c9bac36151460450a10a8140be948723247104b9 --- /dev/null +++ b/Leptophilic_UFO/coupling_orders.py @@ -0,0 +1,16 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:02 + + +from object_library import all_orders, CouplingOrder + + +QCD = CouplingOrder(name = 'QCD', + expansion_order = 99, + hierarchy = 1) + +QED = CouplingOrder(name = 'QED', + expansion_order = 99, + hierarchy = 2) + diff --git a/Leptophilic_UFO/couplings.py b/Leptophilic_UFO/couplings.py new file mode 100644 index 0000000000000000000000000000000000000000..9d12a7f498469e61267eaa9bbc39cff449bda9b1 --- /dev/null +++ b/Leptophilic_UFO/couplings.py @@ -0,0 +1,239 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:02 + + +from object_library import all_couplings, Coupling + +from function_library import complexconjugate, re, im, csc, sec, acsc, asec, cot + + + +GC_1 = Coupling(name = 'GC_1', + value = '-(ee*complex(0,1))/3.', + order = {'QED':1}) + +GC_2 = Coupling(name = 'GC_2', + value = '(2*ee*complex(0,1))/3.', + order = {'QED':1}) + +GC_3 = Coupling(name = 'GC_3', + value = '-(ee*complex(0,1))', + order = {'QED':1}) + +GC_4 = Coupling(name = 'GC_4', + value = 'ee*complex(0,1)', + order = {'QED':1}) + +GC_5 = Coupling(name = 'GC_5', + value = 'ee**2*complex(0,1)', + order = {'QED':2}) + +GC_6 = Coupling(name = 'GC_6', + value = '-G', + order = {'QCD':1}) + +GC_7 = Coupling(name = 'GC_7', + value = 'complex(0,1)*G', + order = {'QCD':1}) + +GC_8 = Coupling(name = 'GC_8', + value = 'complex(0,1)*G**2', + order = {'QCD':2}) + +GC_9 = Coupling(name = 'GC_9', + value = 'complex(0,1)*GZpeL', + order = {'QED':1}) + +GC_10 = Coupling(name = 'GC_10', + value = 'complex(0,1)*GZpeR', + order = {'QED':1}) + +GC_11 = Coupling(name = 'GC_11', + value = 'complex(0,1)*GZpmuL', + order = {'QED':1}) + +GC_12 = Coupling(name = 'GC_12', + value = 'complex(0,1)*GZpmuR', + order = {'QED':1}) + +GC_13 = Coupling(name = 'GC_13', + value = 'complex(0,1)*GZptaL', + order = {'QED':1}) + +GC_14 = Coupling(name = 'GC_14', + value = 'complex(0,1)*GZptaR', + order = {'QED':1}) + +GC_15 = Coupling(name = 'GC_15', + value = '-6*complex(0,1)*lam', + order = {'QED':2}) + +GC_16 = Coupling(name = 'GC_16', + value = '(ee**2*complex(0,1))/(2.*sw**2)', + order = {'QED':2}) + +GC_17 = Coupling(name = 'GC_17', + value = '-((ee**2*complex(0,1))/sw**2)', + order = {'QED':2}) + +GC_18 = Coupling(name = 'GC_18', + value = '(cw**2*ee**2*complex(0,1))/sw**2', + order = {'QED':2}) + +GC_19 = Coupling(name = 'GC_19', + value = '(ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_20 = Coupling(name = 'GC_20', + value = '(CKM1x1*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_21 = Coupling(name = 'GC_21', + value = '(CKM1x2*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_22 = Coupling(name = 'GC_22', + value = '(CKM1x3*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_23 = Coupling(name = 'GC_23', + value = '(CKM2x1*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_24 = Coupling(name = 'GC_24', + value = '(CKM2x2*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_25 = Coupling(name = 'GC_25', + value = '(CKM2x3*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_26 = Coupling(name = 'GC_26', + value = '(CKM3x1*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_27 = Coupling(name = 'GC_27', + value = '(CKM3x2*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_28 = Coupling(name = 'GC_28', + value = '(CKM3x3*ee*complex(0,1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_29 = Coupling(name = 'GC_29', + value = '-(cw*ee*complex(0,1))/(2.*sw)', + order = {'QED':1}) + +GC_30 = Coupling(name = 'GC_30', + value = '(cw*ee*complex(0,1))/(2.*sw)', + order = {'QED':1}) + +GC_31 = Coupling(name = 'GC_31', + value = '(cw*ee*complex(0,1))/sw', + order = {'QED':1}) + +GC_32 = Coupling(name = 'GC_32', + value = '(-2*cw*ee**2*complex(0,1))/sw', + order = {'QED':2}) + +GC_33 = Coupling(name = 'GC_33', + value = '-(ee*complex(0,1)*sw)/(6.*cw)', + order = {'QED':1}) + +GC_34 = Coupling(name = 'GC_34', + value = '(ee*complex(0,1)*sw)/(2.*cw)', + order = {'QED':1}) + +GC_35 = Coupling(name = 'GC_35', + value = '(cw*ee*complex(0,1))/(2.*sw) + (ee*complex(0,1)*sw)/(2.*cw)', + order = {'QED':1}) + +GC_36 = Coupling(name = 'GC_36', + value = 'ee**2*complex(0,1) + (cw**2*ee**2*complex(0,1))/(2.*sw**2) + (ee**2*complex(0,1)*sw**2)/(2.*cw**2)', + order = {'QED':2}) + +GC_37 = Coupling(name = 'GC_37', + value = '-6*complex(0,1)*lam*vev', + order = {'QED':1}) + +GC_38 = Coupling(name = 'GC_38', + value = '(ee**2*complex(0,1)*vev)/(2.*sw**2)', + order = {'QED':1}) + +GC_39 = Coupling(name = 'GC_39', + value = 'ee**2*complex(0,1)*vev + (cw**2*ee**2*complex(0,1)*vev)/(2.*sw**2) + (ee**2*complex(0,1)*sw**2*vev)/(2.*cw**2)', + order = {'QED':1}) + +GC_40 = Coupling(name = 'GC_40', + value = '-((complex(0,1)*yb)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_41 = Coupling(name = 'GC_41', + value = '-((complex(0,1)*yc)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_42 = Coupling(name = 'GC_42', + value = '-((complex(0,1)*ydo)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_43 = Coupling(name = 'GC_43', + value = '-((complex(0,1)*ye)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_44 = Coupling(name = 'GC_44', + value = '-((complex(0,1)*ym)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_45 = Coupling(name = 'GC_45', + value = '-((complex(0,1)*ys)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_46 = Coupling(name = 'GC_46', + value = '-((complex(0,1)*yt)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_47 = Coupling(name = 'GC_47', + value = '-((complex(0,1)*ytau)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_48 = Coupling(name = 'GC_48', + value = '-((complex(0,1)*yup)/cmath.sqrt(2))', + order = {'QED':1}) + +GC_49 = Coupling(name = 'GC_49', + value = '(ee*complex(0,1)*complexconjugate(CKM1x1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_50 = Coupling(name = 'GC_50', + value = '(ee*complex(0,1)*complexconjugate(CKM1x2))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_51 = Coupling(name = 'GC_51', + value = '(ee*complex(0,1)*complexconjugate(CKM1x3))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_52 = Coupling(name = 'GC_52', + value = '(ee*complex(0,1)*complexconjugate(CKM2x1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_53 = Coupling(name = 'GC_53', + value = '(ee*complex(0,1)*complexconjugate(CKM2x2))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_54 = Coupling(name = 'GC_54', + value = '(ee*complex(0,1)*complexconjugate(CKM2x3))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_55 = Coupling(name = 'GC_55', + value = '(ee*complex(0,1)*complexconjugate(CKM3x1))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_56 = Coupling(name = 'GC_56', + value = '(ee*complex(0,1)*complexconjugate(CKM3x2))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + +GC_57 = Coupling(name = 'GC_57', + value = '(ee*complex(0,1)*complexconjugate(CKM3x3))/(sw*cmath.sqrt(2))', + order = {'QED':1}) + diff --git a/Leptophilic_UFO/decays.py b/Leptophilic_UFO/decays.py new file mode 100644 index 0000000000000000000000000000000000000000..6caf2b5621e6e619c1806176617b5436b6250d27 --- /dev/null +++ b/Leptophilic_UFO/decays.py @@ -0,0 +1,111 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:02 + + +from object_library import all_decays, Decay +import particles as P + + +Decay_b = Decay(name = 'Decay_b', + particle = P.b, + partial_widths = {(P.W__minus__,P.c):'(((3*CKM2x3*ee**2*MB**2*complexconjugate(CKM2x3))/(2.*sw**2) + (3*CKM2x3*ee**2*MC**2*complexconjugate(CKM2x3))/(2.*sw**2) + (3*CKM2x3*ee**2*MB**4*complexconjugate(CKM2x3))/(2.*MW**2*sw**2) - (3*CKM2x3*ee**2*MB**2*MC**2*complexconjugate(CKM2x3))/(MW**2*sw**2) + (3*CKM2x3*ee**2*MC**4*complexconjugate(CKM2x3))/(2.*MW**2*sw**2) - (3*CKM2x3*ee**2*MW**2*complexconjugate(CKM2x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MC**2 + MC**4 - 2*MB**2*MW**2 - 2*MC**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MB)**3)', + (P.W__minus__,P.t):'(((3*CKM3x3*ee**2*MB**2*complexconjugate(CKM3x3))/(2.*sw**2) + (3*CKM3x3*ee**2*MT**2*complexconjugate(CKM3x3))/(2.*sw**2) + (3*CKM3x3*ee**2*MB**4*complexconjugate(CKM3x3))/(2.*MW**2*sw**2) - (3*CKM3x3*ee**2*MB**2*MT**2*complexconjugate(CKM3x3))/(MW**2*sw**2) + (3*CKM3x3*ee**2*MT**4*complexconjugate(CKM3x3))/(2.*MW**2*sw**2) - (3*CKM3x3*ee**2*MW**2*complexconjugate(CKM3x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MT**2 + MT**4 - 2*MB**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MB)**3)', + (P.W__minus__,P.u):'(((3*CKM1x3*ee**2*MB**2*complexconjugate(CKM1x3))/(2.*sw**2) + (3*CKM1x3*ee**2*MU**2*complexconjugate(CKM1x3))/(2.*sw**2) + (3*CKM1x3*ee**2*MB**4*complexconjugate(CKM1x3))/(2.*MW**2*sw**2) - (3*CKM1x3*ee**2*MB**2*MU**2*complexconjugate(CKM1x3))/(MW**2*sw**2) + (3*CKM1x3*ee**2*MU**4*complexconjugate(CKM1x3))/(2.*MW**2*sw**2) - (3*CKM1x3*ee**2*MW**2*complexconjugate(CKM1x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MU**2 + MU**4 - 2*MB**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MB)**3)'}) + +Decay_c = Decay(name = 'Decay_c', + particle = P.c, + partial_widths = {(P.W__plus__,P.b):'(((3*CKM2x3*ee**2*MB**2*complexconjugate(CKM2x3))/(2.*sw**2) + (3*CKM2x3*ee**2*MC**2*complexconjugate(CKM2x3))/(2.*sw**2) + (3*CKM2x3*ee**2*MB**4*complexconjugate(CKM2x3))/(2.*MW**2*sw**2) - (3*CKM2x3*ee**2*MB**2*MC**2*complexconjugate(CKM2x3))/(MW**2*sw**2) + (3*CKM2x3*ee**2*MC**4*complexconjugate(CKM2x3))/(2.*MW**2*sw**2) - (3*CKM2x3*ee**2*MW**2*complexconjugate(CKM2x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MC**2 + MC**4 - 2*MB**2*MW**2 - 2*MC**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MC)**3)', + (P.W__plus__,P.d):'(((3*CKM2x1*ee**2*MC**2*complexconjugate(CKM2x1))/(2.*sw**2) + (3*CKM2x1*ee**2*MD**2*complexconjugate(CKM2x1))/(2.*sw**2) + (3*CKM2x1*ee**2*MC**4*complexconjugate(CKM2x1))/(2.*MW**2*sw**2) - (3*CKM2x1*ee**2*MC**2*MD**2*complexconjugate(CKM2x1))/(MW**2*sw**2) + (3*CKM2x1*ee**2*MD**4*complexconjugate(CKM2x1))/(2.*MW**2*sw**2) - (3*CKM2x1*ee**2*MW**2*complexconjugate(CKM2x1))/sw**2)*cmath.sqrt(MC**4 - 2*MC**2*MD**2 + MD**4 - 2*MC**2*MW**2 - 2*MD**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MC)**3)', + (P.W__plus__,P.s):'(((3*CKM2x2*ee**2*MC**2*complexconjugate(CKM2x2))/(2.*sw**2) + (3*CKM2x2*ee**2*MS**2*complexconjugate(CKM2x2))/(2.*sw**2) + (3*CKM2x2*ee**2*MC**4*complexconjugate(CKM2x2))/(2.*MW**2*sw**2) - (3*CKM2x2*ee**2*MC**2*MS**2*complexconjugate(CKM2x2))/(MW**2*sw**2) + (3*CKM2x2*ee**2*MS**4*complexconjugate(CKM2x2))/(2.*MW**2*sw**2) - (3*CKM2x2*ee**2*MW**2*complexconjugate(CKM2x2))/sw**2)*cmath.sqrt(MC**4 - 2*MC**2*MS**2 + MS**4 - 2*MC**2*MW**2 - 2*MS**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MC)**3)'}) + +Decay_d = Decay(name = 'Decay_d', + particle = P.d, + partial_widths = {(P.W__minus__,P.c):'(((3*CKM2x1*ee**2*MC**2*complexconjugate(CKM2x1))/(2.*sw**2) + (3*CKM2x1*ee**2*MD**2*complexconjugate(CKM2x1))/(2.*sw**2) + (3*CKM2x1*ee**2*MC**4*complexconjugate(CKM2x1))/(2.*MW**2*sw**2) - (3*CKM2x1*ee**2*MC**2*MD**2*complexconjugate(CKM2x1))/(MW**2*sw**2) + (3*CKM2x1*ee**2*MD**4*complexconjugate(CKM2x1))/(2.*MW**2*sw**2) - (3*CKM2x1*ee**2*MW**2*complexconjugate(CKM2x1))/sw**2)*cmath.sqrt(MC**4 - 2*MC**2*MD**2 + MD**4 - 2*MC**2*MW**2 - 2*MD**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MD)**3)', + (P.W__minus__,P.t):'(((3*CKM3x1*ee**2*MD**2*complexconjugate(CKM3x1))/(2.*sw**2) + (3*CKM3x1*ee**2*MT**2*complexconjugate(CKM3x1))/(2.*sw**2) + (3*CKM3x1*ee**2*MD**4*complexconjugate(CKM3x1))/(2.*MW**2*sw**2) - (3*CKM3x1*ee**2*MD**2*MT**2*complexconjugate(CKM3x1))/(MW**2*sw**2) + (3*CKM3x1*ee**2*MT**4*complexconjugate(CKM3x1))/(2.*MW**2*sw**2) - (3*CKM3x1*ee**2*MW**2*complexconjugate(CKM3x1))/sw**2)*cmath.sqrt(MD**4 - 2*MD**2*MT**2 + MT**4 - 2*MD**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MD)**3)', + (P.W__minus__,P.u):'(((3*CKM1x1*ee**2*MD**2*complexconjugate(CKM1x1))/(2.*sw**2) + (3*CKM1x1*ee**2*MU**2*complexconjugate(CKM1x1))/(2.*sw**2) + (3*CKM1x1*ee**2*MD**4*complexconjugate(CKM1x1))/(2.*MW**2*sw**2) - (3*CKM1x1*ee**2*MD**2*MU**2*complexconjugate(CKM1x1))/(MW**2*sw**2) + (3*CKM1x1*ee**2*MU**4*complexconjugate(CKM1x1))/(2.*MW**2*sw**2) - (3*CKM1x1*ee**2*MW**2*complexconjugate(CKM1x1))/sw**2)*cmath.sqrt(MD**4 - 2*MD**2*MU**2 + MU**4 - 2*MD**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MD)**3)'}) + +Decay_e__minus__ = Decay(name = 'Decay_e__minus__', + particle = P.e__minus__, + partial_widths = {(P.W__minus__,P.ve):'((Me**2 - MW**2)*((ee**2*Me**2)/(2.*sw**2) + (ee**2*Me**4)/(2.*MW**2*sw**2) - (ee**2*MW**2)/sw**2))/(32.*cmath.pi*abs(Me)**3)'}) + +Decay_H = Decay(name = 'Decay_H', + particle = P.H, + partial_widths = {(P.b,P.b__tilde__):'((-12*MB**2*yb**2 + 3*MH**2*yb**2)*cmath.sqrt(-4*MB**2*MH**2 + MH**4))/(16.*cmath.pi*abs(MH)**3)', + (P.c,P.c__tilde__):'((-12*MC**2*yc**2 + 3*MH**2*yc**2)*cmath.sqrt(-4*MC**2*MH**2 + MH**4))/(16.*cmath.pi*abs(MH)**3)', + (P.d,P.d__tilde__):'((-12*MD**2*ydo**2 + 3*MH**2*ydo**2)*cmath.sqrt(-4*MD**2*MH**2 + MH**4))/(16.*cmath.pi*abs(MH)**3)', + (P.e__minus__,P.e__plus__):'((-4*Me**2*ye**2 + MH**2*ye**2)*cmath.sqrt(-4*Me**2*MH**2 + MH**4))/(16.*cmath.pi*abs(MH)**3)', + (P.mu__minus__,P.mu__plus__):'((MH**2*ym**2 - 4*MMU**2*ym**2)*cmath.sqrt(MH**4 - 4*MH**2*MMU**2))/(16.*cmath.pi*abs(MH)**3)', + (P.s,P.s__tilde__):'((3*MH**2*ys**2 - 12*MS**2*ys**2)*cmath.sqrt(MH**4 - 4*MH**2*MS**2))/(16.*cmath.pi*abs(MH)**3)', + (P.t,P.t__tilde__):'((3*MH**2*yt**2 - 12*MT**2*yt**2)*cmath.sqrt(MH**4 - 4*MH**2*MT**2))/(16.*cmath.pi*abs(MH)**3)', + (P.ta__minus__,P.ta__plus__):'((MH**2*ytau**2 - 4*MTA**2*ytau**2)*cmath.sqrt(MH**4 - 4*MH**2*MTA**2))/(16.*cmath.pi*abs(MH)**3)', + (P.u,P.u__tilde__):'((3*MH**2*yup**2 - 12*MU**2*yup**2)*cmath.sqrt(MH**4 - 4*MH**2*MU**2))/(16.*cmath.pi*abs(MH)**3)', + (P.W__minus__,P.W__plus__):'(((3*ee**4*vev**2)/(4.*sw**4) + (ee**4*MH**4*vev**2)/(16.*MW**4*sw**4) - (ee**4*MH**2*vev**2)/(4.*MW**2*sw**4))*cmath.sqrt(MH**4 - 4*MH**2*MW**2))/(16.*cmath.pi*abs(MH)**3)', + (P.Z,P.Z):'(((9*ee**4*vev**2)/2. + (3*ee**4*MH**4*vev**2)/(8.*MZ**4) - (3*ee**4*MH**2*vev**2)/(2.*MZ**2) + (3*cw**4*ee**4*vev**2)/(4.*sw**4) + (cw**4*ee**4*MH**4*vev**2)/(16.*MZ**4*sw**4) - (cw**4*ee**4*MH**2*vev**2)/(4.*MZ**2*sw**4) + (3*cw**2*ee**4*vev**2)/sw**2 + (cw**2*ee**4*MH**4*vev**2)/(4.*MZ**4*sw**2) - (cw**2*ee**4*MH**2*vev**2)/(MZ**2*sw**2) + (3*ee**4*sw**2*vev**2)/cw**2 + (ee**4*MH**4*sw**2*vev**2)/(4.*cw**2*MZ**4) - (ee**4*MH**2*sw**2*vev**2)/(cw**2*MZ**2) + (3*ee**4*sw**4*vev**2)/(4.*cw**4) + (ee**4*MH**4*sw**4*vev**2)/(16.*cw**4*MZ**4) - (ee**4*MH**2*sw**4*vev**2)/(4.*cw**4*MZ**2))*cmath.sqrt(MH**4 - 4*MH**2*MZ**2))/(32.*cmath.pi*abs(MH)**3)'}) + +Decay_mu__minus__ = Decay(name = 'Decay_mu__minus__', + particle = P.mu__minus__, + partial_widths = {(P.W__minus__,P.vm):'((MMU**2 - MW**2)*((ee**2*MMU**2)/(2.*sw**2) + (ee**2*MMU**4)/(2.*MW**2*sw**2) - (ee**2*MW**2)/sw**2))/(32.*cmath.pi*abs(MMU)**3)'}) + +Decay_s = Decay(name = 'Decay_s', + particle = P.s, + partial_widths = {(P.W__minus__,P.c):'(((3*CKM2x2*ee**2*MC**2*complexconjugate(CKM2x2))/(2.*sw**2) + (3*CKM2x2*ee**2*MS**2*complexconjugate(CKM2x2))/(2.*sw**2) + (3*CKM2x2*ee**2*MC**4*complexconjugate(CKM2x2))/(2.*MW**2*sw**2) - (3*CKM2x2*ee**2*MC**2*MS**2*complexconjugate(CKM2x2))/(MW**2*sw**2) + (3*CKM2x2*ee**2*MS**4*complexconjugate(CKM2x2))/(2.*MW**2*sw**2) - (3*CKM2x2*ee**2*MW**2*complexconjugate(CKM2x2))/sw**2)*cmath.sqrt(MC**4 - 2*MC**2*MS**2 + MS**4 - 2*MC**2*MW**2 - 2*MS**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MS)**3)', + (P.W__minus__,P.t):'(((3*CKM3x2*ee**2*MS**2*complexconjugate(CKM3x2))/(2.*sw**2) + (3*CKM3x2*ee**2*MT**2*complexconjugate(CKM3x2))/(2.*sw**2) + (3*CKM3x2*ee**2*MS**4*complexconjugate(CKM3x2))/(2.*MW**2*sw**2) - (3*CKM3x2*ee**2*MS**2*MT**2*complexconjugate(CKM3x2))/(MW**2*sw**2) + (3*CKM3x2*ee**2*MT**4*complexconjugate(CKM3x2))/(2.*MW**2*sw**2) - (3*CKM3x2*ee**2*MW**2*complexconjugate(CKM3x2))/sw**2)*cmath.sqrt(MS**4 - 2*MS**2*MT**2 + MT**4 - 2*MS**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MS)**3)', + (P.W__minus__,P.u):'(((3*CKM1x2*ee**2*MS**2*complexconjugate(CKM1x2))/(2.*sw**2) + (3*CKM1x2*ee**2*MU**2*complexconjugate(CKM1x2))/(2.*sw**2) + (3*CKM1x2*ee**2*MS**4*complexconjugate(CKM1x2))/(2.*MW**2*sw**2) - (3*CKM1x2*ee**2*MS**2*MU**2*complexconjugate(CKM1x2))/(MW**2*sw**2) + (3*CKM1x2*ee**2*MU**4*complexconjugate(CKM1x2))/(2.*MW**2*sw**2) - (3*CKM1x2*ee**2*MW**2*complexconjugate(CKM1x2))/sw**2)*cmath.sqrt(MS**4 - 2*MS**2*MU**2 + MU**4 - 2*MS**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MS)**3)'}) + +Decay_t = Decay(name = 'Decay_t', + particle = P.t, + partial_widths = {(P.W__plus__,P.b):'(((3*CKM3x3*ee**2*MB**2*complexconjugate(CKM3x3))/(2.*sw**2) + (3*CKM3x3*ee**2*MT**2*complexconjugate(CKM3x3))/(2.*sw**2) + (3*CKM3x3*ee**2*MB**4*complexconjugate(CKM3x3))/(2.*MW**2*sw**2) - (3*CKM3x3*ee**2*MB**2*MT**2*complexconjugate(CKM3x3))/(MW**2*sw**2) + (3*CKM3x3*ee**2*MT**4*complexconjugate(CKM3x3))/(2.*MW**2*sw**2) - (3*CKM3x3*ee**2*MW**2*complexconjugate(CKM3x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MT**2 + MT**4 - 2*MB**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MT)**3)', + (P.W__plus__,P.d):'(((3*CKM3x1*ee**2*MD**2*complexconjugate(CKM3x1))/(2.*sw**2) + (3*CKM3x1*ee**2*MT**2*complexconjugate(CKM3x1))/(2.*sw**2) + (3*CKM3x1*ee**2*MD**4*complexconjugate(CKM3x1))/(2.*MW**2*sw**2) - (3*CKM3x1*ee**2*MD**2*MT**2*complexconjugate(CKM3x1))/(MW**2*sw**2) + (3*CKM3x1*ee**2*MT**4*complexconjugate(CKM3x1))/(2.*MW**2*sw**2) - (3*CKM3x1*ee**2*MW**2*complexconjugate(CKM3x1))/sw**2)*cmath.sqrt(MD**4 - 2*MD**2*MT**2 + MT**4 - 2*MD**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MT)**3)', + (P.W__plus__,P.s):'(((3*CKM3x2*ee**2*MS**2*complexconjugate(CKM3x2))/(2.*sw**2) + (3*CKM3x2*ee**2*MT**2*complexconjugate(CKM3x2))/(2.*sw**2) + (3*CKM3x2*ee**2*MS**4*complexconjugate(CKM3x2))/(2.*MW**2*sw**2) - (3*CKM3x2*ee**2*MS**2*MT**2*complexconjugate(CKM3x2))/(MW**2*sw**2) + (3*CKM3x2*ee**2*MT**4*complexconjugate(CKM3x2))/(2.*MW**2*sw**2) - (3*CKM3x2*ee**2*MW**2*complexconjugate(CKM3x2))/sw**2)*cmath.sqrt(MS**4 - 2*MS**2*MT**2 + MT**4 - 2*MS**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MT)**3)'}) + +Decay_ta__minus__ = Decay(name = 'Decay_ta__minus__', + particle = P.ta__minus__, + partial_widths = {(P.W__minus__,P.vt):'((MTA**2 - MW**2)*((ee**2*MTA**2)/(2.*sw**2) + (ee**2*MTA**4)/(2.*MW**2*sw**2) - (ee**2*MW**2)/sw**2))/(32.*cmath.pi*abs(MTA)**3)'}) + +Decay_u = Decay(name = 'Decay_u', + particle = P.u, + partial_widths = {(P.W__plus__,P.b):'(((3*CKM1x3*ee**2*MB**2*complexconjugate(CKM1x3))/(2.*sw**2) + (3*CKM1x3*ee**2*MU**2*complexconjugate(CKM1x3))/(2.*sw**2) + (3*CKM1x3*ee**2*MB**4*complexconjugate(CKM1x3))/(2.*MW**2*sw**2) - (3*CKM1x3*ee**2*MB**2*MU**2*complexconjugate(CKM1x3))/(MW**2*sw**2) + (3*CKM1x3*ee**2*MU**4*complexconjugate(CKM1x3))/(2.*MW**2*sw**2) - (3*CKM1x3*ee**2*MW**2*complexconjugate(CKM1x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MU**2 + MU**4 - 2*MB**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MU)**3)', + (P.W__plus__,P.d):'(((3*CKM1x1*ee**2*MD**2*complexconjugate(CKM1x1))/(2.*sw**2) + (3*CKM1x1*ee**2*MU**2*complexconjugate(CKM1x1))/(2.*sw**2) + (3*CKM1x1*ee**2*MD**4*complexconjugate(CKM1x1))/(2.*MW**2*sw**2) - (3*CKM1x1*ee**2*MD**2*MU**2*complexconjugate(CKM1x1))/(MW**2*sw**2) + (3*CKM1x1*ee**2*MU**4*complexconjugate(CKM1x1))/(2.*MW**2*sw**2) - (3*CKM1x1*ee**2*MW**2*complexconjugate(CKM1x1))/sw**2)*cmath.sqrt(MD**4 - 2*MD**2*MU**2 + MU**4 - 2*MD**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MU)**3)', + (P.W__plus__,P.s):'(((3*CKM1x2*ee**2*MS**2*complexconjugate(CKM1x2))/(2.*sw**2) + (3*CKM1x2*ee**2*MU**2*complexconjugate(CKM1x2))/(2.*sw**2) + (3*CKM1x2*ee**2*MS**4*complexconjugate(CKM1x2))/(2.*MW**2*sw**2) - (3*CKM1x2*ee**2*MS**2*MU**2*complexconjugate(CKM1x2))/(MW**2*sw**2) + (3*CKM1x2*ee**2*MU**4*complexconjugate(CKM1x2))/(2.*MW**2*sw**2) - (3*CKM1x2*ee**2*MW**2*complexconjugate(CKM1x2))/sw**2)*cmath.sqrt(MS**4 - 2*MS**2*MU**2 + MU**4 - 2*MS**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(96.*cmath.pi*abs(MU)**3)'}) + +Decay_W__plus__ = Decay(name = 'Decay_W__plus__', + particle = P.W__plus__, + partial_widths = {(P.c,P.b__tilde__):'(((-3*CKM2x3*ee**2*MB**2*complexconjugate(CKM2x3))/(2.*sw**2) - (3*CKM2x3*ee**2*MC**2*complexconjugate(CKM2x3))/(2.*sw**2) - (3*CKM2x3*ee**2*MB**4*complexconjugate(CKM2x3))/(2.*MW**2*sw**2) + (3*CKM2x3*ee**2*MB**2*MC**2*complexconjugate(CKM2x3))/(MW**2*sw**2) - (3*CKM2x3*ee**2*MC**4*complexconjugate(CKM2x3))/(2.*MW**2*sw**2) + (3*CKM2x3*ee**2*MW**2*complexconjugate(CKM2x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MC**2 + MC**4 - 2*MB**2*MW**2 - 2*MC**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.c,P.d__tilde__):'(((-3*CKM2x1*ee**2*MC**2*complexconjugate(CKM2x1))/(2.*sw**2) - (3*CKM2x1*ee**2*MD**2*complexconjugate(CKM2x1))/(2.*sw**2) - (3*CKM2x1*ee**2*MC**4*complexconjugate(CKM2x1))/(2.*MW**2*sw**2) + (3*CKM2x1*ee**2*MC**2*MD**2*complexconjugate(CKM2x1))/(MW**2*sw**2) - (3*CKM2x1*ee**2*MD**4*complexconjugate(CKM2x1))/(2.*MW**2*sw**2) + (3*CKM2x1*ee**2*MW**2*complexconjugate(CKM2x1))/sw**2)*cmath.sqrt(MC**4 - 2*MC**2*MD**2 + MD**4 - 2*MC**2*MW**2 - 2*MD**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.c,P.s__tilde__):'(((-3*CKM2x2*ee**2*MC**2*complexconjugate(CKM2x2))/(2.*sw**2) - (3*CKM2x2*ee**2*MS**2*complexconjugate(CKM2x2))/(2.*sw**2) - (3*CKM2x2*ee**2*MC**4*complexconjugate(CKM2x2))/(2.*MW**2*sw**2) + (3*CKM2x2*ee**2*MC**2*MS**2*complexconjugate(CKM2x2))/(MW**2*sw**2) - (3*CKM2x2*ee**2*MS**4*complexconjugate(CKM2x2))/(2.*MW**2*sw**2) + (3*CKM2x2*ee**2*MW**2*complexconjugate(CKM2x2))/sw**2)*cmath.sqrt(MC**4 - 2*MC**2*MS**2 + MS**4 - 2*MC**2*MW**2 - 2*MS**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.t,P.b__tilde__):'(((-3*CKM3x3*ee**2*MB**2*complexconjugate(CKM3x3))/(2.*sw**2) - (3*CKM3x3*ee**2*MT**2*complexconjugate(CKM3x3))/(2.*sw**2) - (3*CKM3x3*ee**2*MB**4*complexconjugate(CKM3x3))/(2.*MW**2*sw**2) + (3*CKM3x3*ee**2*MB**2*MT**2*complexconjugate(CKM3x3))/(MW**2*sw**2) - (3*CKM3x3*ee**2*MT**4*complexconjugate(CKM3x3))/(2.*MW**2*sw**2) + (3*CKM3x3*ee**2*MW**2*complexconjugate(CKM3x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MT**2 + MT**4 - 2*MB**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.t,P.d__tilde__):'(((-3*CKM3x1*ee**2*MD**2*complexconjugate(CKM3x1))/(2.*sw**2) - (3*CKM3x1*ee**2*MT**2*complexconjugate(CKM3x1))/(2.*sw**2) - (3*CKM3x1*ee**2*MD**4*complexconjugate(CKM3x1))/(2.*MW**2*sw**2) + (3*CKM3x1*ee**2*MD**2*MT**2*complexconjugate(CKM3x1))/(MW**2*sw**2) - (3*CKM3x1*ee**2*MT**4*complexconjugate(CKM3x1))/(2.*MW**2*sw**2) + (3*CKM3x1*ee**2*MW**2*complexconjugate(CKM3x1))/sw**2)*cmath.sqrt(MD**4 - 2*MD**2*MT**2 + MT**4 - 2*MD**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.t,P.s__tilde__):'(((-3*CKM3x2*ee**2*MS**2*complexconjugate(CKM3x2))/(2.*sw**2) - (3*CKM3x2*ee**2*MT**2*complexconjugate(CKM3x2))/(2.*sw**2) - (3*CKM3x2*ee**2*MS**4*complexconjugate(CKM3x2))/(2.*MW**2*sw**2) + (3*CKM3x2*ee**2*MS**2*MT**2*complexconjugate(CKM3x2))/(MW**2*sw**2) - (3*CKM3x2*ee**2*MT**4*complexconjugate(CKM3x2))/(2.*MW**2*sw**2) + (3*CKM3x2*ee**2*MW**2*complexconjugate(CKM3x2))/sw**2)*cmath.sqrt(MS**4 - 2*MS**2*MT**2 + MT**4 - 2*MS**2*MW**2 - 2*MT**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.u,P.b__tilde__):'(((-3*CKM1x3*ee**2*MB**2*complexconjugate(CKM1x3))/(2.*sw**2) - (3*CKM1x3*ee**2*MU**2*complexconjugate(CKM1x3))/(2.*sw**2) - (3*CKM1x3*ee**2*MB**4*complexconjugate(CKM1x3))/(2.*MW**2*sw**2) + (3*CKM1x3*ee**2*MB**2*MU**2*complexconjugate(CKM1x3))/(MW**2*sw**2) - (3*CKM1x3*ee**2*MU**4*complexconjugate(CKM1x3))/(2.*MW**2*sw**2) + (3*CKM1x3*ee**2*MW**2*complexconjugate(CKM1x3))/sw**2)*cmath.sqrt(MB**4 - 2*MB**2*MU**2 + MU**4 - 2*MB**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.u,P.d__tilde__):'(((-3*CKM1x1*ee**2*MD**2*complexconjugate(CKM1x1))/(2.*sw**2) - (3*CKM1x1*ee**2*MU**2*complexconjugate(CKM1x1))/(2.*sw**2) - (3*CKM1x1*ee**2*MD**4*complexconjugate(CKM1x1))/(2.*MW**2*sw**2) + (3*CKM1x1*ee**2*MD**2*MU**2*complexconjugate(CKM1x1))/(MW**2*sw**2) - (3*CKM1x1*ee**2*MU**4*complexconjugate(CKM1x1))/(2.*MW**2*sw**2) + (3*CKM1x1*ee**2*MW**2*complexconjugate(CKM1x1))/sw**2)*cmath.sqrt(MD**4 - 2*MD**2*MU**2 + MU**4 - 2*MD**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.u,P.s__tilde__):'(((-3*CKM1x2*ee**2*MS**2*complexconjugate(CKM1x2))/(2.*sw**2) - (3*CKM1x2*ee**2*MU**2*complexconjugate(CKM1x2))/(2.*sw**2) - (3*CKM1x2*ee**2*MS**4*complexconjugate(CKM1x2))/(2.*MW**2*sw**2) + (3*CKM1x2*ee**2*MS**2*MU**2*complexconjugate(CKM1x2))/(MW**2*sw**2) - (3*CKM1x2*ee**2*MU**4*complexconjugate(CKM1x2))/(2.*MW**2*sw**2) + (3*CKM1x2*ee**2*MW**2*complexconjugate(CKM1x2))/sw**2)*cmath.sqrt(MS**4 - 2*MS**2*MU**2 + MU**4 - 2*MS**2*MW**2 - 2*MU**2*MW**2 + MW**4))/(48.*cmath.pi*abs(MW)**3)', + (P.ve,P.e__plus__):'((-Me**2 + MW**2)*(-(ee**2*Me**2)/(2.*sw**2) - (ee**2*Me**4)/(2.*MW**2*sw**2) + (ee**2*MW**2)/sw**2))/(48.*cmath.pi*abs(MW)**3)', + (P.vm,P.mu__plus__):'((-MMU**2 + MW**2)*(-(ee**2*MMU**2)/(2.*sw**2) - (ee**2*MMU**4)/(2.*MW**2*sw**2) + (ee**2*MW**2)/sw**2))/(48.*cmath.pi*abs(MW)**3)', + (P.vt,P.ta__plus__):'((-MTA**2 + MW**2)*(-(ee**2*MTA**2)/(2.*sw**2) - (ee**2*MTA**4)/(2.*MW**2*sw**2) + (ee**2*MW**2)/sw**2))/(48.*cmath.pi*abs(MW)**3)'}) + +Decay_Z = Decay(name = 'Decay_Z', + particle = P.Z, + partial_widths = {(P.b,P.b__tilde__):'((-7*ee**2*MB**2 + ee**2*MZ**2 - (3*cw**2*ee**2*MB**2)/(2.*sw**2) + (3*cw**2*ee**2*MZ**2)/(2.*sw**2) - (17*ee**2*MB**2*sw**2)/(6.*cw**2) + (5*ee**2*MZ**2*sw**2)/(6.*cw**2))*cmath.sqrt(-4*MB**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.c,P.c__tilde__):'((-11*ee**2*MC**2 - ee**2*MZ**2 - (3*cw**2*ee**2*MC**2)/(2.*sw**2) + (3*cw**2*ee**2*MZ**2)/(2.*sw**2) + (7*ee**2*MC**2*sw**2)/(6.*cw**2) + (17*ee**2*MZ**2*sw**2)/(6.*cw**2))*cmath.sqrt(-4*MC**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.d,P.d__tilde__):'((-7*ee**2*MD**2 + ee**2*MZ**2 - (3*cw**2*ee**2*MD**2)/(2.*sw**2) + (3*cw**2*ee**2*MZ**2)/(2.*sw**2) - (17*ee**2*MD**2*sw**2)/(6.*cw**2) + (5*ee**2*MZ**2*sw**2)/(6.*cw**2))*cmath.sqrt(-4*MD**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.e__minus__,P.e__plus__):'((-5*ee**2*Me**2 - ee**2*MZ**2 - (cw**2*ee**2*Me**2)/(2.*sw**2) + (cw**2*ee**2*MZ**2)/(2.*sw**2) + (7*ee**2*Me**2*sw**2)/(2.*cw**2) + (5*ee**2*MZ**2*sw**2)/(2.*cw**2))*cmath.sqrt(-4*Me**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.mu__minus__,P.mu__plus__):'((-5*ee**2*MMU**2 - ee**2*MZ**2 - (cw**2*ee**2*MMU**2)/(2.*sw**2) + (cw**2*ee**2*MZ**2)/(2.*sw**2) + (7*ee**2*MMU**2*sw**2)/(2.*cw**2) + (5*ee**2*MZ**2*sw**2)/(2.*cw**2))*cmath.sqrt(-4*MMU**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.s,P.s__tilde__):'((-7*ee**2*MS**2 + ee**2*MZ**2 - (3*cw**2*ee**2*MS**2)/(2.*sw**2) + (3*cw**2*ee**2*MZ**2)/(2.*sw**2) - (17*ee**2*MS**2*sw**2)/(6.*cw**2) + (5*ee**2*MZ**2*sw**2)/(6.*cw**2))*cmath.sqrt(-4*MS**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.t,P.t__tilde__):'((-11*ee**2*MT**2 - ee**2*MZ**2 - (3*cw**2*ee**2*MT**2)/(2.*sw**2) + (3*cw**2*ee**2*MZ**2)/(2.*sw**2) + (7*ee**2*MT**2*sw**2)/(6.*cw**2) + (17*ee**2*MZ**2*sw**2)/(6.*cw**2))*cmath.sqrt(-4*MT**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.ta__minus__,P.ta__plus__):'((-5*ee**2*MTA**2 - ee**2*MZ**2 - (cw**2*ee**2*MTA**2)/(2.*sw**2) + (cw**2*ee**2*MZ**2)/(2.*sw**2) + (7*ee**2*MTA**2*sw**2)/(2.*cw**2) + (5*ee**2*MZ**2*sw**2)/(2.*cw**2))*cmath.sqrt(-4*MTA**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.u,P.u__tilde__):'((-11*ee**2*MU**2 - ee**2*MZ**2 - (3*cw**2*ee**2*MU**2)/(2.*sw**2) + (3*cw**2*ee**2*MZ**2)/(2.*sw**2) + (7*ee**2*MU**2*sw**2)/(6.*cw**2) + (17*ee**2*MZ**2*sw**2)/(6.*cw**2))*cmath.sqrt(-4*MU**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)', + (P.ve,P.ve__tilde__):'(MZ**2*(ee**2*MZ**2 + (cw**2*ee**2*MZ**2)/(2.*sw**2) + (ee**2*MZ**2*sw**2)/(2.*cw**2)))/(48.*cmath.pi*abs(MZ)**3)', + (P.vm,P.vm__tilde__):'(MZ**2*(ee**2*MZ**2 + (cw**2*ee**2*MZ**2)/(2.*sw**2) + (ee**2*MZ**2*sw**2)/(2.*cw**2)))/(48.*cmath.pi*abs(MZ)**3)', + (P.vt,P.vt__tilde__):'(MZ**2*(ee**2*MZ**2 + (cw**2*ee**2*MZ**2)/(2.*sw**2) + (ee**2*MZ**2*sw**2)/(2.*cw**2)))/(48.*cmath.pi*abs(MZ)**3)', + (P.W__minus__,P.W__plus__):'(((-12*cw**2*ee**2*MW**2)/sw**2 - (17*cw**2*ee**2*MZ**2)/sw**2 + (4*cw**2*ee**2*MZ**4)/(MW**2*sw**2) + (cw**2*ee**2*MZ**6)/(4.*MW**4*sw**2))*cmath.sqrt(-4*MW**2*MZ**2 + MZ**4))/(48.*cmath.pi*abs(MZ)**3)'}) + +Decay_Zp = Decay(name = 'Decay_Zp', + particle = P.Zp, + partial_widths = {(P.e__minus__,P.e__plus__):'((-2*GZpeL**2*Me**2 + 12*GZpeL*GZpeR*Me**2 - 2*GZpeR**2*Me**2 + 2*GZpeL**2*ZpM**2 + 2*GZpeR**2*ZpM**2)*cmath.sqrt(-4*Me**2*ZpM**2 + ZpM**4))/(48.*cmath.pi*abs(ZpM)**3)', + (P.mu__minus__,P.mu__plus__):'((-2*GZpmuL**2*MMU**2 + 12*GZpmuL*GZpmuR*MMU**2 - 2*GZpmuR**2*MMU**2 + 2*GZpmuL**2*ZpM**2 + 2*GZpmuR**2*ZpM**2)*cmath.sqrt(-4*MMU**2*ZpM**2 + ZpM**4))/(48.*cmath.pi*abs(ZpM)**3)', + (P.ta__minus__,P.ta__plus__):'((-2*GZptaL**2*MTA**2 + 12*GZptaL*GZptaR*MTA**2 - 2*GZptaR**2*MTA**2 + 2*GZptaL**2*ZpM**2 + 2*GZptaR**2*ZpM**2)*cmath.sqrt(-4*MTA**2*ZpM**2 + ZpM**4))/(48.*cmath.pi*abs(ZpM)**3)', + (P.ve,P.ve__tilde__):'(GZpeL**2*ZpM**4)/(24.*cmath.pi*abs(ZpM)**3)', + (P.vm,P.vm__tilde__):'(GZpmuL**2*ZpM**4)/(24.*cmath.pi*abs(ZpM)**3)', + (P.vt,P.vt__tilde__):'(GZptaL**2*ZpM**4)/(24.*cmath.pi*abs(ZpM)**3)'}) + diff --git a/Leptophilic_UFO/function_library.py b/Leptophilic_UFO/function_library.py new file mode 100644 index 0000000000000000000000000000000000000000..c4cfad7f0e64cbe3eab938f53dc84aeda4d1e26a --- /dev/null +++ b/Leptophilic_UFO/function_library.py @@ -0,0 +1,71 @@ +# This file is part of the UFO. +# +# This file contains definitions for functions that +# are extensions of the cmath library, and correspond +# either to functions that are in cmath, but inconvenient +# to access from there (e.g. z.conjugate()), +# or functions that are simply not defined. +# +# + +__date__ = "22 July 2010" +__author__ = "claude.duhr@durham.ac.uk" + +import cmath +from object_library import all_functions, Function + +# +# shortcuts for functions from cmath +# + +complexconjugate = Function(name = 'complexconjugate', + arguments = ('z',), + expression = 'z.conjugate()') + + +re = Function(name = 're', + arguments = ('z',), + expression = 'z.real') + +im = Function(name = 'im', + arguments = ('z',), + expression = 'z.imag') + +# New functions (trigonometric) + +sec = Function(name = 'sec', + arguments = ('z',), + expression = '1./cmath.cos(z)') + +asec = Function(name = 'asec', + arguments = ('z',), + expression = 'cmath.acos(1./z)') + +csc = Function(name = 'csc', + arguments = ('z',), + expression = '1./cmath.sin(z)') + +acsc = Function(name = 'acsc', + arguments = ('z',), + expression = 'cmath.asin(1./z)') + +cot = Function(name = 'cot', + arguments = ('z',), + expression = '1./cmath.tan(z)') + +# Heaviside theta function + +theta_function = Function(name = 'theta_function', + arguments = ('x','y','z'), + expression = 'y if x else z') + +# Auxiliary functions for NLO + +cond = Function(name = 'cond', + arguments = ('condition','ExprTrue','ExprFalse'), + expression = '(ExprTrue if condition==0.0 else ExprFalse)') + +reglog = Function(name = 'reglog', + arguments = ('z'), + expression = '(0.0 if z==0.0 else cmath.log(z))') + diff --git a/Leptophilic_UFO/lorentz.py b/Leptophilic_UFO/lorentz.py new file mode 100644 index 0000000000000000000000000000000000000000..c2441df716fe0eacd5b75a531a6d739c73ef8b85 --- /dev/null +++ b/Leptophilic_UFO/lorentz.py @@ -0,0 +1,82 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:02 + + +from object_library import all_lorentz, Lorentz + +from function_library import complexconjugate, re, im, csc, sec, acsc, asec, cot + + +UUV1 = Lorentz(name = 'UUV1', + spins = [ -1, -1, 3 ], + structure = 'P(3,2) + P(3,3)') + +SSS1 = Lorentz(name = 'SSS1', + spins = [ 1, 1, 1 ], + structure = '1') + +FFS1 = Lorentz(name = 'FFS1', + spins = [ 2, 2, 1 ], + structure = 'ProjM(2,1) + ProjP(2,1)') + +FFV1 = Lorentz(name = 'FFV1', + spins = [ 2, 2, 3 ], + structure = 'Gamma(3,2,1)') + +FFV2 = Lorentz(name = 'FFV2', + spins = [ 2, 2, 3 ], + structure = 'Gamma(3,2,-1)*ProjM(-1,1)') + +FFV3 = Lorentz(name = 'FFV3', + spins = [ 2, 2, 3 ], + structure = 'Gamma(3,2,-1)*ProjP(-1,1)') + +FFV4 = Lorentz(name = 'FFV4', + spins = [ 2, 2, 3 ], + structure = 'Gamma(3,2,-1)*ProjM(-1,1) - 2*Gamma(3,2,-1)*ProjP(-1,1)') + +FFV5 = Lorentz(name = 'FFV5', + spins = [ 2, 2, 3 ], + structure = 'Gamma(3,2,-1)*ProjM(-1,1) + 2*Gamma(3,2,-1)*ProjP(-1,1)') + +FFV6 = Lorentz(name = 'FFV6', + spins = [ 2, 2, 3 ], + structure = 'Gamma(3,2,-1)*ProjM(-1,1) + 4*Gamma(3,2,-1)*ProjP(-1,1)') + +VVS1 = Lorentz(name = 'VVS1', + spins = [ 3, 3, 1 ], + structure = 'Metric(1,2)') + +VVV1 = Lorentz(name = 'VVV1', + spins = [ 3, 3, 3 ], + structure = 'P(3,1)*Metric(1,2) - P(3,2)*Metric(1,2) - P(2,1)*Metric(1,3) + P(2,3)*Metric(1,3) + P(1,2)*Metric(2,3) - P(1,3)*Metric(2,3)') + +SSSS1 = Lorentz(name = 'SSSS1', + spins = [ 1, 1, 1, 1 ], + structure = '1') + +VVSS1 = Lorentz(name = 'VVSS1', + spins = [ 3, 3, 1, 1 ], + structure = 'Metric(1,2)') + +VVVV1 = Lorentz(name = 'VVVV1', + spins = [ 3, 3, 3, 3 ], + structure = 'Metric(1,4)*Metric(2,3) - Metric(1,3)*Metric(2,4)') + +VVVV2 = Lorentz(name = 'VVVV2', + spins = [ 3, 3, 3, 3 ], + structure = 'Metric(1,4)*Metric(2,3) + Metric(1,3)*Metric(2,4) - 2*Metric(1,2)*Metric(3,4)') + +VVVV3 = Lorentz(name = 'VVVV3', + spins = [ 3, 3, 3, 3 ], + structure = 'Metric(1,4)*Metric(2,3) - Metric(1,2)*Metric(3,4)') + +VVVV4 = Lorentz(name = 'VVVV4', + spins = [ 3, 3, 3, 3 ], + structure = 'Metric(1,3)*Metric(2,4) - Metric(1,2)*Metric(3,4)') + +VVVV5 = Lorentz(name = 'VVVV5', + spins = [ 3, 3, 3, 3 ], + structure = 'Metric(1,4)*Metric(2,3) - (Metric(1,3)*Metric(2,4))/2. - (Metric(1,2)*Metric(3,4))/2.') + diff --git a/Leptophilic_UFO/object_library.py b/Leptophilic_UFO/object_library.py new file mode 100644 index 0000000000000000000000000000000000000000..ee0a429eb7b54e0b058ba862147bd5770f87a65f --- /dev/null +++ b/Leptophilic_UFO/object_library.py @@ -0,0 +1,377 @@ +## +## +## Feynrules Header +## +## +## +## +## + +import cmath +import re + +class UFOError(Exception): + """Exception raised if when inconsistencies are detected in the UFO model.""" + pass + +class UFOBaseClass(object): + """The class from which all FeynRules classes are derived.""" + + require_args = [] + + def __init__(self, *args, **options): + assert(len(self.require_args) == len (args)) + + for i, name in enumerate(self.require_args): + setattr(self, name, args[i]) + + for (option, value) in options.items(): + setattr(self, option, value) + + def get(self, name): + return getattr(self, name) + + def set(self, name, value): + setattr(self, name, value) + + def get_all(self): + """Return a dictionary containing all the information of the object""" + return self.__dict__ + + def __str__(self): + return self.name + + def nice_string(self): + """ return string with the full information """ + return '\n'.join(['%s \t: %s' %(name, value) for name, value in self.__dict__.items()]) + + def __repr__(self): + replacements = [ + ('+','__plus__'), + ('-','__minus__'), + ('@','__at__'), + ('!','__exclam__'), + ('?','__quest__'), + ('*','__star__'), + ('~','__tilde__') + ] + text = self.name + for orig,sub in replacements: + text = text.replace(orig,sub) + return text + + + +all_particles = [] + +class Particle(UFOBaseClass): + """A standard Particle""" + + require_args=['pdg_code', 'name', 'antiname', 'spin', 'color', 'mass', 'width', 'texname', 'antitexname', 'charge'] + + require_args_all = ['pdg_code', 'name', 'antiname', 'spin', 'color', 'mass', 'width', 'texname', 'antitexname','counterterm','charge', 'line', 'propagating', 'goldstoneboson', 'propagator'] + + def __init__(self, pdg_code, name, antiname, spin, color, mass, width, texname, + antitexname, charge , line=None, propagating=True, counterterm=None, goldstoneboson=False, + propagator=None, **options): + + args= (pdg_code, name, antiname, spin, color, mass, width, texname, + antitexname, float(charge)) + + UFOBaseClass.__init__(self, *args, **options) + + global all_particles + all_particles.append(self) + + self.propagating = propagating + self.goldstoneboson= goldstoneboson + + self.selfconjugate = (name == antiname) + if not line: + self.line = self.find_line_type() + else: + self.line = line + + if propagator: + if isinstance(propagator, dict): + self.propagator = propagator + else: + self.propagator = {0: propagator, 1: propagator} + + def find_line_type(self): + """ find how we draw a line if not defined + valid output: dashed/straight/wavy/curly/double/swavy/scurly + """ + + spin = self.spin + color = self.color + + #use default + if spin == 1: + return 'dashed' + elif spin == 2: + if not self.selfconjugate: + return 'straight' + elif color == 1: + return 'swavy' + else: + return 'scurly' + elif spin == 3: + if color == 1: + return 'wavy' + + else: + return 'curly' + elif spin == 5: + return 'double' + elif spin == -1: + return 'dotted' + else: + return 'dashed' # not supported yet + + def anti(self): + if self.selfconjugate: + raise Exception('%s has no anti particle.' % self.name) + outdic = {} + for k,v in self.__dict__.iteritems(): + if k not in self.require_args_all: + outdic[k] = -v + if self.color in [1,8]: + newcolor = self.color + else: + newcolor = -self.color + + return Particle(-self.pdg_code, self.antiname, self.name, self.spin, newcolor, self.mass, self.width, + self.antitexname, self.texname, -self.charge, self.line, self.propagating, self.goldstoneboson, **outdic) + + + +all_parameters = [] + +class Parameter(UFOBaseClass): + + require_args=['name', 'nature', 'type', 'value', 'texname'] + + def __init__(self, name, nature, type, value, texname, lhablock=None, lhacode=None): + + args = (name,nature,type,value,texname) + + UFOBaseClass.__init__(self, *args) + + args=(name,nature,type,value,texname) + + global all_parameters + all_parameters.append(self) + + if (lhablock is None or lhacode is None) and nature == 'external': + raise Exception('Need LHA information for external parameter "%s".' % name) + self.lhablock = lhablock + self.lhacode = lhacode + +all_CTparameters = [] + +class CTParameter(UFOBaseClass): + + require_args=['name', 'nature,', 'type', 'value', 'texname'] + + def __init__(self, name, type, value, texname): + + args = (name,'internal',type,value,texname) + + UFOBaseClass.__init__(self, *args) + + args=(name,'internal',type,value,texname) + + self.nature='interal' + + global all_CTparameters + all_CTparameters.append(self) + + def finite(self): + try: + return self.value[0] + except KeyError: + return 'ZERO' + + def pole(self, x): + try: + return self.value[-x] + except KeyError: + return 'ZERO' + +all_vertices = [] + +class Vertex(UFOBaseClass): + + require_args=['name', 'particles', 'color', 'lorentz', 'couplings'] + + def __init__(self, name, particles, color, lorentz, couplings, **opt): + + args = (name, particles, color, lorentz, couplings) + + UFOBaseClass.__init__(self, *args, **opt) + + args=(particles,color,lorentz,couplings) + + global all_vertices + all_vertices.append(self) + +all_CTvertices = [] + +class CTVertex(UFOBaseClass): + + require_args=['name', 'particles', 'color', 'lorentz', 'couplings', 'type', 'loop_particles'] + + def __init__(self, name, particles, color, lorentz, couplings, type, loop_particles, **opt): + + args = (name, particles, color, lorentz, couplings, type, loop_particles) + + UFOBaseClass.__init__(self, *args, **opt) + + args=(particles,color,lorentz,couplings, type, loop_particles) + + global all_CTvertices + all_CTvertices.append(self) + +all_couplings = [] + +class Coupling(UFOBaseClass): + + require_args=['name', 'value', 'order'] + + require_args_all=['name', 'value', 'order', 'loop_particles', 'counterterm'] + + def __init__(self, name, value, order, **opt): + + args =(name, value, order) + UFOBaseClass.__init__(self, *args, **opt) + global all_couplings + all_couplings.append(self) + + def value(self): + return self.pole(0) + + def pole(self, x): + """ the self.value attribute can be a dictionary directly specifying the Laurent serie using normal + parameter or just a string which can possibly contain CTparameter defining the Laurent serie.""" + + if isinstance(self.value,dict): + if -x in self.value.keys(): + return self.value[-x] + else: + return 'ZERO' + + CTparam=None + for param in all_CTparameters: + pattern=re.compile(r"(?P<first>\A|\*|\+|\-|\()(?P<name>"+param.name+r")(?P<second>\Z|\*|\+|\-|\))") + numberOfMatches=len(pattern.findall(self.value)) + if numberOfMatches==1: + if not CTparam: + CTparam=param + else: + raise UFOError, "UFO does not support yet more than one occurence of CTParameters in the couplings values." + elif numberOfMatches>1: + raise UFOError, "UFO does not support yet more than one occurence of CTParameters in the couplings values." + + if not CTparam: + if x==0: + return self.value + else: + return 'ZERO' + else: + if CTparam.pole(x)=='ZERO': + return 'ZERO' + else: + def substitution(matchedObj): + return matchedObj.group('first')+"("+CTparam.pole(x)+")"+matchedObj.group('second') + pattern=re.compile(r"(?P<first>\A|\*|\+|\-|\()(?P<name>"+CTparam.name+r")(?P<second>\Z|\*|\+|\-|\))") + return pattern.sub(substitution,self.value) + +all_lorentz = [] + +class Lorentz(UFOBaseClass): + + require_args=['name','spins','structure'] + + def __init__(self, name, spins, structure='external', **opt): + args = (name, spins, structure) + UFOBaseClass.__init__(self, *args, **opt) + + global all_lorentz + all_lorentz.append(self) + + +all_functions = [] + +class Function(object): + + def __init__(self, name, arguments, expression): + + global all_functions + all_functions.append(self) + + self.name = name + self.arguments = arguments + self.expr = expression + + def __call__(self, *opt): + + for i, arg in enumerate(self.arguments): + exec('%s = %s' % (arg, opt[i] )) + + return eval(self.expr) + +all_orders = [] + +class CouplingOrder(object): + + def __init__(self, name, expansion_order, hierarchy, perturbative_expansion = 0): + + global all_orders + all_orders.append(self) + + self.name = name + self.expansion_order = expansion_order + self.hierarchy = hierarchy + self.perturbative_expansion = perturbative_expansion + +all_decays = [] + +class Decay(UFOBaseClass): + require_args = ['particle','partial_widths'] + + def __init__(self, particle, partial_widths, **opt): + args = (particle, partial_widths) + UFOBaseClass.__init__(self, *args, **opt) + + global all_decays + all_decays.append(self) + + # Add the information directly to the particle + particle.partial_widths = partial_widths + +all_form_factors = [] + +class FormFactor(UFOBaseClass): + require_args = ['name','type','value'] + + def __init__(self, name, type, value, **opt): + args = (name, type, value) + UFOBaseClass.__init__(self, *args, **opt) + + global all_form_factors + all_form_factors.append(self) + + +all_propagators = [] + +class Propagator(UFOBaseClass): + + require_args = ['name','numerator','denominator'] + + def __init__(self, name, numerator, denominator=None, **opt): + args = (name, numerator, denominator) + UFOBaseClass.__init__(self, *args, **opt) + + global all_propagators + all_propagators.append(self) diff --git a/Leptophilic_UFO/parameters.py b/Leptophilic_UFO/parameters.py new file mode 100644 index 0000000000000000000000000000000000000000..699bd5d1838a2385f9c1f15339ec086c8fb4c87a --- /dev/null +++ b/Leptophilic_UFO/parameters.py @@ -0,0 +1,487 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:01 + + + +from object_library import all_parameters, Parameter + + +from function_library import complexconjugate, re, im, csc, sec, acsc, asec, cot + +# This is a default parameter object representing 0. +ZERO = Parameter(name = 'ZERO', + nature = 'internal', + type = 'real', + value = '0.0', + texname = '0') + +# User-defined parameters. +cabi = Parameter(name = 'cabi', + nature = 'external', + type = 'real', + value = 0.227736, + texname = '\\theta _c', + lhablock = 'CKMBLOCK', + lhacode = [ 1 ]) + +aEWM1 = Parameter(name = 'aEWM1', + nature = 'external', + type = 'real', + value = 127.9, + texname = '\\text{aEWM1}', + lhablock = 'SMINPUTS', + lhacode = [ 1 ]) + +Gf = Parameter(name = 'Gf', + nature = 'external', + type = 'real', + value = 0.0000116637, + texname = 'G_f', + lhablock = 'SMINPUTS', + lhacode = [ 2 ]) + +aS = Parameter(name = 'aS', + nature = 'external', + type = 'real', + value = 0.1184, + texname = '\\alpha _s', + lhablock = 'SMINPUTS', + lhacode = [ 3 ]) + +ymdo = Parameter(name = 'ymdo', + nature = 'external', + type = 'real', + value = 0.00504, + texname = '\\text{ymdo}', + lhablock = 'YUKAWA', + lhacode = [ 1 ]) + +ymup = Parameter(name = 'ymup', + nature = 'external', + type = 'real', + value = 0.00255, + texname = '\\text{ymup}', + lhablock = 'YUKAWA', + lhacode = [ 2 ]) + +yms = Parameter(name = 'yms', + nature = 'external', + type = 'real', + value = 0.101, + texname = '\\text{yms}', + lhablock = 'YUKAWA', + lhacode = [ 3 ]) + +ymc = Parameter(name = 'ymc', + nature = 'external', + type = 'real', + value = 1.27, + texname = '\\text{ymc}', + lhablock = 'YUKAWA', + lhacode = [ 4 ]) + +ymb = Parameter(name = 'ymb', + nature = 'external', + type = 'real', + value = 4.7, + texname = '\\text{ymb}', + lhablock = 'YUKAWA', + lhacode = [ 5 ]) + +ymt = Parameter(name = 'ymt', + nature = 'external', + type = 'real', + value = 172, + texname = '\\text{ymt}', + lhablock = 'YUKAWA', + lhacode = [ 6 ]) + +yme = Parameter(name = 'yme', + nature = 'external', + type = 'real', + value = 0.000511, + texname = '\\text{yme}', + lhablock = 'YUKAWA', + lhacode = [ 11 ]) + +ymm = Parameter(name = 'ymm', + nature = 'external', + type = 'real', + value = 0.10566, + texname = '\\text{ymm}', + lhablock = 'YUKAWA', + lhacode = [ 13 ]) + +ymtau = Parameter(name = 'ymtau', + nature = 'external', + type = 'real', + value = 1.777, + texname = '\\text{ymtau}', + lhablock = 'YUKAWA', + lhacode = [ 15 ]) + +GZpeL = Parameter(name = 'GZpeL', + nature = 'external', + type = 'real', + value = 0., + texname = 'G_{\\text{Zpel}}', + lhablock = 'ZPINPUTS', + lhacode = [ 1 ]) + +GZpeR = Parameter(name = 'GZpeR', + nature = 'external', + type = 'real', + value = 0., + texname = 'G_{\\text{Zper}}', + lhablock = 'ZPINPUTS', + lhacode = [ 2 ]) + +GZpmuL = Parameter(name = 'GZpmuL', + nature = 'external', + type = 'real', + value = 0., + texname = 'G_{\\text{Zpmul}}', + lhablock = 'ZPINPUTS', + lhacode = [ 3 ]) + +GZpmuR = Parameter(name = 'GZpmuR', + nature = 'external', + type = 'real', + value = 0., + texname = 'G_{\\text{Zpmur}}', + lhablock = 'ZPINPUTS', + lhacode = [ 4 ]) + +GZptaL = Parameter(name = 'GZptaL', + nature = 'external', + type = 'real', + value = 0., + texname = 'G_{\\text{Zptal}}', + lhablock = 'ZPINPUTS', + lhacode = [ 5 ]) + +GZptaR = Parameter(name = 'GZptaR', + nature = 'external', + type = 'real', + value = 0., + texname = 'G_{\\text{Zptar}}', + lhablock = 'ZPINPUTS', + lhacode = [ 6 ]) + +MZ = Parameter(name = 'MZ', + nature = 'external', + type = 'real', + value = 91.1876, + texname = '\\text{MZ}', + lhablock = 'MASS', + lhacode = [ 23 ]) + +Me = Parameter(name = 'Me', + nature = 'external', + type = 'real', + value = 0.000511, + texname = '\\text{Me}', + lhablock = 'MASS', + lhacode = [ 11 ]) + +MMU = Parameter(name = 'MMU', + nature = 'external', + type = 'real', + value = 0.10566, + texname = '\\text{MMU}', + lhablock = 'MASS', + lhacode = [ 13 ]) + +MTA = Parameter(name = 'MTA', + nature = 'external', + type = 'real', + value = 1.777, + texname = '\\text{MTA}', + lhablock = 'MASS', + lhacode = [ 15 ]) + +MU = Parameter(name = 'MU', + nature = 'external', + type = 'real', + value = 0.00255, + texname = 'M', + lhablock = 'MASS', + lhacode = [ 2 ]) + +MC = Parameter(name = 'MC', + nature = 'external', + type = 'real', + value = 1.27, + texname = '\\text{MC}', + lhablock = 'MASS', + lhacode = [ 4 ]) + +MT = Parameter(name = 'MT', + nature = 'external', + type = 'real', + value = 172, + texname = '\\text{MT}', + lhablock = 'MASS', + lhacode = [ 6 ]) + +MD = Parameter(name = 'MD', + nature = 'external', + type = 'real', + value = 0.00504, + texname = '\\text{MD}', + lhablock = 'MASS', + lhacode = [ 1 ]) + +MS = Parameter(name = 'MS', + nature = 'external', + type = 'real', + value = 0.101, + texname = '\\text{MS}', + lhablock = 'MASS', + lhacode = [ 3 ]) + +MB = Parameter(name = 'MB', + nature = 'external', + type = 'real', + value = 4.7, + texname = '\\text{MB}', + lhablock = 'MASS', + lhacode = [ 5 ]) + +MH = Parameter(name = 'MH', + nature = 'external', + type = 'real', + value = 125, + texname = '\\text{MH}', + lhablock = 'MASS', + lhacode = [ 25 ]) + +ZpM = Parameter(name = 'ZpM', + nature = 'external', + type = 'real', + value = 3000., + texname = '\\text{ZpM}', + lhablock = 'MASS', + lhacode = [ 999888 ]) + +WZ = Parameter(name = 'WZ', + nature = 'external', + type = 'real', + value = 2.4952, + texname = '\\text{WZ}', + lhablock = 'DECAY', + lhacode = [ 23 ]) + +WW = Parameter(name = 'WW', + nature = 'external', + type = 'real', + value = 2.085, + texname = '\\text{WW}', + lhablock = 'DECAY', + lhacode = [ 24 ]) + +WT = Parameter(name = 'WT', + nature = 'external', + type = 'real', + value = 1.50833649, + texname = '\\text{WT}', + lhablock = 'DECAY', + lhacode = [ 6 ]) + +WH = Parameter(name = 'WH', + nature = 'external', + type = 'real', + value = 0.00407, + texname = '\\text{WH}', + lhablock = 'DECAY', + lhacode = [ 25 ]) + +ZpW = Parameter(name = 'ZpW', + nature = 'external', + type = 'real', + value = 1., + texname = '\\text{ZpW}', + lhablock = 'DECAY', + lhacode = [ 999888 ]) + +aEW = Parameter(name = 'aEW', + nature = 'internal', + type = 'real', + value = '1/aEWM1', + texname = '\\alpha _{\\text{EW}}') + +G = Parameter(name = 'G', + nature = 'internal', + type = 'real', + value = '2*cmath.sqrt(aS)*cmath.sqrt(cmath.pi)', + texname = 'G') + +CKM1x1 = Parameter(name = 'CKM1x1', + nature = 'internal', + type = 'complex', + value = 'cmath.cos(cabi)', + texname = '\\text{CKM1x1}') + +CKM1x2 = Parameter(name = 'CKM1x2', + nature = 'internal', + type = 'complex', + value = 'cmath.sin(cabi)', + texname = '\\text{CKM1x2}') + +CKM1x3 = Parameter(name = 'CKM1x3', + nature = 'internal', + type = 'complex', + value = '0', + texname = '\\text{CKM1x3}') + +CKM2x1 = Parameter(name = 'CKM2x1', + nature = 'internal', + type = 'complex', + value = '-cmath.sin(cabi)', + texname = '\\text{CKM2x1}') + +CKM2x2 = Parameter(name = 'CKM2x2', + nature = 'internal', + type = 'complex', + value = 'cmath.cos(cabi)', + texname = '\\text{CKM2x2}') + +CKM2x3 = Parameter(name = 'CKM2x3', + nature = 'internal', + type = 'complex', + value = '0', + texname = '\\text{CKM2x3}') + +CKM3x1 = Parameter(name = 'CKM3x1', + nature = 'internal', + type = 'complex', + value = '0', + texname = '\\text{CKM3x1}') + +CKM3x2 = Parameter(name = 'CKM3x2', + nature = 'internal', + type = 'complex', + value = '0', + texname = '\\text{CKM3x2}') + +CKM3x3 = Parameter(name = 'CKM3x3', + nature = 'internal', + type = 'complex', + value = '1', + texname = '\\text{CKM3x3}') + +MW = Parameter(name = 'MW', + nature = 'internal', + type = 'real', + value = 'cmath.sqrt(MZ**2/2. + cmath.sqrt(MZ**4/4. - (aEW*cmath.pi*MZ**2)/(Gf*cmath.sqrt(2))))', + texname = 'M_W') + +ee = Parameter(name = 'ee', + nature = 'internal', + type = 'real', + value = '2*cmath.sqrt(aEW)*cmath.sqrt(cmath.pi)', + texname = 'e') + +sw2 = Parameter(name = 'sw2', + nature = 'internal', + type = 'real', + value = '1 - MW**2/MZ**2', + texname = '\\text{sw2}') + +cw = Parameter(name = 'cw', + nature = 'internal', + type = 'real', + value = 'cmath.sqrt(1 - sw2)', + texname = 'c_w') + +sw = Parameter(name = 'sw', + nature = 'internal', + type = 'real', + value = 'cmath.sqrt(sw2)', + texname = 's_w') + +g1 = Parameter(name = 'g1', + nature = 'internal', + type = 'real', + value = 'ee/cw', + texname = 'g_1') + +gw = Parameter(name = 'gw', + nature = 'internal', + type = 'real', + value = 'ee/sw', + texname = 'g_w') + +vev = Parameter(name = 'vev', + nature = 'internal', + type = 'real', + value = '(2*MW*sw)/ee', + texname = '\\text{vev}') + +lam = Parameter(name = 'lam', + nature = 'internal', + type = 'real', + value = 'MH**2/(2.*vev**2)', + texname = '\\text{lam}') + +yb = Parameter(name = 'yb', + nature = 'internal', + type = 'real', + value = '(ymb*cmath.sqrt(2))/vev', + texname = '\\text{yb}') + +yc = Parameter(name = 'yc', + nature = 'internal', + type = 'real', + value = '(ymc*cmath.sqrt(2))/vev', + texname = '\\text{yc}') + +ydo = Parameter(name = 'ydo', + nature = 'internal', + type = 'real', + value = '(ymdo*cmath.sqrt(2))/vev', + texname = '\\text{ydo}') + +ye = Parameter(name = 'ye', + nature = 'internal', + type = 'real', + value = '(yme*cmath.sqrt(2))/vev', + texname = '\\text{ye}') + +ym = Parameter(name = 'ym', + nature = 'internal', + type = 'real', + value = '(ymm*cmath.sqrt(2))/vev', + texname = '\\text{ym}') + +ys = Parameter(name = 'ys', + nature = 'internal', + type = 'real', + value = '(yms*cmath.sqrt(2))/vev', + texname = '\\text{ys}') + +yt = Parameter(name = 'yt', + nature = 'internal', + type = 'real', + value = '(ymt*cmath.sqrt(2))/vev', + texname = '\\text{yt}') + +ytau = Parameter(name = 'ytau', + nature = 'internal', + type = 'real', + value = '(ymtau*cmath.sqrt(2))/vev', + texname = '\\text{ytau}') + +yup = Parameter(name = 'yup', + nature = 'internal', + type = 'real', + value = '(ymup*cmath.sqrt(2))/vev', + texname = '\\text{yup}') + +muH = Parameter(name = 'muH', + nature = 'internal', + type = 'real', + value = 'cmath.sqrt(lam*vev**2)', + texname = '\\mu') + diff --git a/Leptophilic_UFO/particles.py b/Leptophilic_UFO/particles.py new file mode 100644 index 0000000000000000000000000000000000000000..dc136795315fd5b6fdd210a1345d2ac75f95e640 --- /dev/null +++ b/Leptophilic_UFO/particles.py @@ -0,0 +1,401 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:01 + + +from __future__ import division +from object_library import all_particles, Particle +import parameters as Param + +import propagators as Prop + +a = Particle(pdg_code = 22, + name = 'a', + antiname = 'a', + spin = 3, + color = 1, + mass = Param.ZERO, + width = Param.ZERO, + texname = 'a', + antitexname = 'a', + charge = 0, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +Z = Particle(pdg_code = 23, + name = 'Z', + antiname = 'Z', + spin = 3, + color = 1, + mass = Param.MZ, + width = Param.WZ, + texname = 'Z', + antitexname = 'Z', + charge = 0, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +W__plus__ = Particle(pdg_code = 24, + name = 'W+', + antiname = 'W-', + spin = 3, + color = 1, + mass = Param.MW, + width = Param.WW, + texname = 'W+', + antitexname = 'W-', + charge = 1, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +W__minus__ = W__plus__.anti() + +g = Particle(pdg_code = 21, + name = 'g', + antiname = 'g', + spin = 3, + color = 8, + mass = Param.ZERO, + width = Param.ZERO, + texname = 'g', + antitexname = 'g', + charge = 0, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +ghA = Particle(pdg_code = 9000001, + name = 'ghA', + antiname = 'ghA~', + spin = -1, + color = 1, + mass = Param.ZERO, + width = Param.ZERO, + texname = 'ghA', + antitexname = 'ghA~', + charge = 0, + GhostNumber = 1, + LeptonNumber = 0, + Y = 0) + +ghA__tilde__ = ghA.anti() + +ghZ = Particle(pdg_code = 9000002, + name = 'ghZ', + antiname = 'ghZ~', + spin = -1, + color = 1, + mass = Param.MZ, + width = Param.WZ, + texname = 'ghZ', + antitexname = 'ghZ~', + charge = 0, + GhostNumber = 1, + LeptonNumber = 0, + Y = 0) + +ghZ__tilde__ = ghZ.anti() + +ghWp = Particle(pdg_code = 9000003, + name = 'ghWp', + antiname = 'ghWp~', + spin = -1, + color = 1, + mass = Param.MW, + width = Param.WW, + texname = 'ghWp', + antitexname = 'ghWp~', + charge = 1, + GhostNumber = 1, + LeptonNumber = 0, + Y = 0) + +ghWp__tilde__ = ghWp.anti() + +ghWm = Particle(pdg_code = 9000004, + name = 'ghWm', + antiname = 'ghWm~', + spin = -1, + color = 1, + mass = Param.MW, + width = Param.WW, + texname = 'ghWm', + antitexname = 'ghWm~', + charge = -1, + GhostNumber = 1, + LeptonNumber = 0, + Y = 0) + +ghWm__tilde__ = ghWm.anti() + +ghG = Particle(pdg_code = 9000005, + name = 'ghG', + antiname = 'ghG~', + spin = -1, + color = 8, + mass = Param.ZERO, + width = Param.ZERO, + texname = 'ghG', + antitexname = 'ghG~', + charge = 0, + GhostNumber = 1, + LeptonNumber = 0, + Y = 0) + +ghG__tilde__ = ghG.anti() + +ve = Particle(pdg_code = 12, + name = 've', + antiname = 've~', + spin = 2, + color = 1, + mass = Param.ZERO, + width = Param.ZERO, + texname = 've', + antitexname = 've~', + charge = 0, + GhostNumber = 0, + LeptonNumber = 1, + Y = 0) + +ve__tilde__ = ve.anti() + +vm = Particle(pdg_code = 14, + name = 'vm', + antiname = 'vm~', + spin = 2, + color = 1, + mass = Param.ZERO, + width = Param.ZERO, + texname = 'vm', + antitexname = 'vm~', + charge = 0, + GhostNumber = 0, + LeptonNumber = 1, + Y = 0) + +vm__tilde__ = vm.anti() + +vt = Particle(pdg_code = 16, + name = 'vt', + antiname = 'vt~', + spin = 2, + color = 1, + mass = Param.ZERO, + width = Param.ZERO, + texname = 'vt', + antitexname = 'vt~', + charge = 0, + GhostNumber = 0, + LeptonNumber = 1, + Y = 0) + +vt__tilde__ = vt.anti() + +e__minus__ = Particle(pdg_code = 11, + name = 'e-', + antiname = 'e+', + spin = 2, + color = 1, + mass = Param.Me, + width = Param.ZERO, + texname = 'e-', + antitexname = 'e+', + charge = -1, + GhostNumber = 0, + LeptonNumber = 1, + Y = 0) + +e__plus__ = e__minus__.anti() + +mu__minus__ = Particle(pdg_code = 13, + name = 'mu-', + antiname = 'mu+', + spin = 2, + color = 1, + mass = Param.MMU, + width = Param.ZERO, + texname = 'mu-', + antitexname = 'mu+', + charge = -1, + GhostNumber = 0, + LeptonNumber = 1, + Y = 0) + +mu__plus__ = mu__minus__.anti() + +ta__minus__ = Particle(pdg_code = 15, + name = 'ta-', + antiname = 'ta+', + spin = 2, + color = 1, + mass = Param.MTA, + width = Param.ZERO, + texname = 'ta-', + antitexname = 'ta+', + charge = -1, + GhostNumber = 0, + LeptonNumber = 1, + Y = 0) + +ta__plus__ = ta__minus__.anti() + +u = Particle(pdg_code = 2, + name = 'u', + antiname = 'u~', + spin = 2, + color = 3, + mass = Param.MU, + width = Param.ZERO, + texname = 'u', + antitexname = 'u~', + charge = 2/3, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +u__tilde__ = u.anti() + +c = Particle(pdg_code = 4, + name = 'c', + antiname = 'c~', + spin = 2, + color = 3, + mass = Param.MC, + width = Param.ZERO, + texname = 'c', + antitexname = 'c~', + charge = 2/3, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +c__tilde__ = c.anti() + +t = Particle(pdg_code = 6, + name = 't', + antiname = 't~', + spin = 2, + color = 3, + mass = Param.MT, + width = Param.WT, + texname = 't', + antitexname = 't~', + charge = 2/3, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +t__tilde__ = t.anti() + +d = Particle(pdg_code = 1, + name = 'd', + antiname = 'd~', + spin = 2, + color = 3, + mass = Param.MD, + width = Param.ZERO, + texname = 'd', + antitexname = 'd~', + charge = -1/3, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +d__tilde__ = d.anti() + +s = Particle(pdg_code = 3, + name = 's', + antiname = 's~', + spin = 2, + color = 3, + mass = Param.MS, + width = Param.ZERO, + texname = 's', + antitexname = 's~', + charge = -1/3, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +s__tilde__ = s.anti() + +b = Particle(pdg_code = 5, + name = 'b', + antiname = 'b~', + spin = 2, + color = 3, + mass = Param.MB, + width = Param.ZERO, + texname = 'b', + antitexname = 'b~', + charge = -1/3, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +b__tilde__ = b.anti() + +H = Particle(pdg_code = 25, + name = 'H', + antiname = 'H', + spin = 1, + color = 1, + mass = Param.MH, + width = Param.WH, + texname = 'H', + antitexname = 'H', + charge = 0, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +G0 = Particle(pdg_code = 250, + name = 'G0', + antiname = 'G0', + spin = 1, + color = 1, + mass = Param.MZ, + width = Param.WZ, + texname = 'G0', + antitexname = 'G0', + goldstone = True, + charge = 0, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +G__plus__ = Particle(pdg_code = 251, + name = 'G+', + antiname = 'G-', + spin = 1, + color = 1, + mass = Param.MW, + width = Param.WW, + texname = 'G+', + antitexname = 'G-', + goldstone = True, + charge = 1, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + +G__minus__ = G__plus__.anti() + +Zp = Particle(pdg_code = 999888, + name = 'Zp', + antiname = 'Zp', + spin = 3, + color = 1, + mass = Param.ZpM, + width = Param.ZpW, + texname = 'Zp', + antitexname = 'Zp', + charge = 0, + GhostNumber = 0, + LeptonNumber = 0, + Y = 0) + diff --git a/Leptophilic_UFO/propagators.py b/Leptophilic_UFO/propagators.py new file mode 100644 index 0000000000000000000000000000000000000000..e65747439ac8df46c16a60bb74c7fccd4a2bb71a --- /dev/null +++ b/Leptophilic_UFO/propagators.py @@ -0,0 +1,35 @@ +# This file was automatically created by FeynRules 2.0 (static file) +# Mathematica version: 8.0 for Mac OS X x86 (64-bit) (November 6, 2010) +# Date: Mon 1 Oct 2012 14:58:26 + +from object_library import all_propagators, Propagator + + +# define only once the denominator since this is always the same +denominator = "P('mu', id) * P('mu', id) - Mass(id) * Mass(id) + complex(0,1) * Mass(id) * Width(id)" + +# propagator for the scalar +S = Propagator(name = "S", + numerator = "complex(0,1)", + denominator = denominator + ) + +# propagator for the incoming fermion # the one for the outcomming is computed on the flight +F = Propagator(name = "F", + numerator = "complex(0,1) * (Gamma('mu', s1, s2) * P('mu', id) + Mass(id) * Identity(s1, s2))", + denominator = denominator + ) + +# massive vector in the unitary gauge, can't be use for massless particles +V1 = Propagator(name = "V1", + numerator = "complex(0,1) * (-1 * Metric(l1, l2) + Metric(l1,'mu')* P('mu', id) * P(l2, id) / Mass(id)**2 ", + denominator = denominator + ) + +# massless vector and massive vector in unitary gauge +V2 = Propagator(name = "V2", + numerator = "complex(0,-1) * Metric(l1, l2)", + denominator = "P('mu', id) * P('mu', id)" + ) + + diff --git a/Leptophilic_UFO/vertices.py b/Leptophilic_UFO/vertices.py new file mode 100644 index 0000000000000000000000000000000000000000..ecd90723ac5fd581062f8f0082248565a1113330 --- /dev/null +++ b/Leptophilic_UFO/vertices.py @@ -0,0 +1,497 @@ +# This file was automatically created by FeynRules 2.0.25 +# Mathematica version: 9.0 for Linux x86 (64-bit) (November 20, 2012) +# Date: Tue 25 Nov 2014 00:01:01 + + +from object_library import all_vertices, Vertex +import particles as P +import couplings as C +import lorentz as L + + +V_1 = Vertex(name = 'V_1', + particles = [ P.H, P.H, P.H, P.H ], + color = [ '1' ], + lorentz = [ L.SSSS1 ], + couplings = {(0,0):C.GC_15}) + +V_2 = Vertex(name = 'V_2', + particles = [ P.H, P.H, P.H ], + color = [ '1' ], + lorentz = [ L.SSS1 ], + couplings = {(0,0):C.GC_37}) + +V_3 = Vertex(name = 'V_3', + particles = [ P.ghG, P.ghG__tilde__, P.g ], + color = [ 'f(1,2,3)' ], + lorentz = [ L.UUV1 ], + couplings = {(0,0):C.GC_6}) + +V_4 = Vertex(name = 'V_4', + particles = [ P.g, P.g, P.g ], + color = [ 'f(1,2,3)' ], + lorentz = [ L.VVV1 ], + couplings = {(0,0):C.GC_6}) + +V_5 = Vertex(name = 'V_5', + particles = [ P.g, P.g, P.g, P.g ], + color = [ 'f(-1,1,2)*f(3,4,-1)', 'f(-1,1,3)*f(2,4,-1)', 'f(-1,1,4)*f(2,3,-1)' ], + lorentz = [ L.VVVV1, L.VVVV3, L.VVVV4 ], + couplings = {(1,1):C.GC_8,(0,0):C.GC_8,(2,2):C.GC_8}) + +V_6 = Vertex(name = 'V_6', + particles = [ P.d__tilde__, P.d, P.H ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_42}) + +V_7 = Vertex(name = 'V_7', + particles = [ P.s__tilde__, P.s, P.H ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_45}) + +V_8 = Vertex(name = 'V_8', + particles = [ P.b__tilde__, P.b, P.H ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_40}) + +V_9 = Vertex(name = 'V_9', + particles = [ P.e__plus__, P.e__minus__, P.H ], + color = [ '1' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_43}) + +V_10 = Vertex(name = 'V_10', + particles = [ P.mu__plus__, P.mu__minus__, P.H ], + color = [ '1' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_44}) + +V_11 = Vertex(name = 'V_11', + particles = [ P.ta__plus__, P.ta__minus__, P.H ], + color = [ '1' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_47}) + +V_12 = Vertex(name = 'V_12', + particles = [ P.u__tilde__, P.u, P.H ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_48}) + +V_13 = Vertex(name = 'V_13', + particles = [ P.c__tilde__, P.c, P.H ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_41}) + +V_14 = Vertex(name = 'V_14', + particles = [ P.t__tilde__, P.t, P.H ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFS1 ], + couplings = {(0,0):C.GC_46}) + +V_15 = Vertex(name = 'V_15', + particles = [ P.a, P.W__minus__, P.W__plus__ ], + color = [ '1' ], + lorentz = [ L.VVV1 ], + couplings = {(0,0):C.GC_4}) + +V_16 = Vertex(name = 'V_16', + particles = [ P.W__minus__, P.W__plus__, P.H, P.H ], + color = [ '1' ], + lorentz = [ L.VVSS1 ], + couplings = {(0,0):C.GC_16}) + +V_17 = Vertex(name = 'V_17', + particles = [ P.W__minus__, P.W__plus__, P.H ], + color = [ '1' ], + lorentz = [ L.VVS1 ], + couplings = {(0,0):C.GC_38}) + +V_18 = Vertex(name = 'V_18', + particles = [ P.a, P.a, P.W__minus__, P.W__plus__ ], + color = [ '1' ], + lorentz = [ L.VVVV2 ], + couplings = {(0,0):C.GC_5}) + +V_19 = Vertex(name = 'V_19', + particles = [ P.W__minus__, P.W__plus__, P.Z ], + color = [ '1' ], + lorentz = [ L.VVV1 ], + couplings = {(0,0):C.GC_31}) + +V_20 = Vertex(name = 'V_20', + particles = [ P.W__minus__, P.W__minus__, P.W__plus__, P.W__plus__ ], + color = [ '1' ], + lorentz = [ L.VVVV2 ], + couplings = {(0,0):C.GC_17}) + +V_21 = Vertex(name = 'V_21', + particles = [ P.a, P.W__minus__, P.W__plus__, P.Z ], + color = [ '1' ], + lorentz = [ L.VVVV5 ], + couplings = {(0,0):C.GC_32}) + +V_22 = Vertex(name = 'V_22', + particles = [ P.Z, P.Z, P.H, P.H ], + color = [ '1' ], + lorentz = [ L.VVSS1 ], + couplings = {(0,0):C.GC_36}) + +V_23 = Vertex(name = 'V_23', + particles = [ P.Z, P.Z, P.H ], + color = [ '1' ], + lorentz = [ L.VVS1 ], + couplings = {(0,0):C.GC_39}) + +V_24 = Vertex(name = 'V_24', + particles = [ P.W__minus__, P.W__plus__, P.Z, P.Z ], + color = [ '1' ], + lorentz = [ L.VVVV2 ], + couplings = {(0,0):C.GC_18}) + +V_25 = Vertex(name = 'V_25', + particles = [ P.mu__plus__, P.mu__minus__, P.Zp ], + color = [ '1' ], + lorentz = [ L.FFV2, L.FFV3 ], + couplings = {(0,0):C.GC_11,(0,1):C.GC_12}) + +V_26 = Vertex(name = 'V_26', + particles = [ P.e__plus__, P.e__minus__, P.Zp ], + color = [ '1' ], + lorentz = [ L.FFV2, L.FFV3 ], + couplings = {(0,0):C.GC_9,(0,1):C.GC_10}) + +V_27 = Vertex(name = 'V_27', + particles = [ P.vm__tilde__, P.vm, P.Zp ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_11}) + +V_28 = Vertex(name = 'V_28', + particles = [ P.ta__plus__, P.ta__minus__, P.Zp ], + color = [ '1' ], + lorentz = [ L.FFV2, L.FFV3 ], + couplings = {(0,0):C.GC_13,(0,1):C.GC_14}) + +V_29 = Vertex(name = 'V_29', + particles = [ P.vt__tilde__, P.vt, P.Zp ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_13}) + +V_30 = Vertex(name = 'V_30', + particles = [ P.ve__tilde__, P.ve, P.Zp ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_9}) + +V_31 = Vertex(name = 'V_31', + particles = [ P.e__plus__, P.ve, P.W__minus__ ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_19}) + +V_32 = Vertex(name = 'V_32', + particles = [ P.mu__plus__, P.vm, P.W__minus__ ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_19}) + +V_33 = Vertex(name = 'V_33', + particles = [ P.ta__plus__, P.vt, P.W__minus__ ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_19}) + +V_34 = Vertex(name = 'V_34', + particles = [ P.ve__tilde__, P.ve, P.Z ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_35}) + +V_35 = Vertex(name = 'V_35', + particles = [ P.vm__tilde__, P.vm, P.Z ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_35}) + +V_36 = Vertex(name = 'V_36', + particles = [ P.vt__tilde__, P.vt, P.Z ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_35}) + +V_37 = Vertex(name = 'V_37', + particles = [ P.e__plus__, P.e__minus__, P.a ], + color = [ '1' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_3}) + +V_38 = Vertex(name = 'V_38', + particles = [ P.mu__plus__, P.mu__minus__, P.a ], + color = [ '1' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_3}) + +V_39 = Vertex(name = 'V_39', + particles = [ P.ta__plus__, P.ta__minus__, P.a ], + color = [ '1' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_3}) + +V_40 = Vertex(name = 'V_40', + particles = [ P.ve__tilde__, P.e__minus__, P.W__plus__ ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_19}) + +V_41 = Vertex(name = 'V_41', + particles = [ P.vm__tilde__, P.mu__minus__, P.W__plus__ ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_19}) + +V_42 = Vertex(name = 'V_42', + particles = [ P.vt__tilde__, P.ta__minus__, P.W__plus__ ], + color = [ '1' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_19}) + +V_43 = Vertex(name = 'V_43', + particles = [ P.e__plus__, P.e__minus__, P.Z ], + color = [ '1' ], + lorentz = [ L.FFV2, L.FFV5 ], + couplings = {(0,0):C.GC_29,(0,1):C.GC_34}) + +V_44 = Vertex(name = 'V_44', + particles = [ P.mu__plus__, P.mu__minus__, P.Z ], + color = [ '1' ], + lorentz = [ L.FFV2, L.FFV5 ], + couplings = {(0,0):C.GC_29,(0,1):C.GC_34}) + +V_45 = Vertex(name = 'V_45', + particles = [ P.ta__plus__, P.ta__minus__, P.Z ], + color = [ '1' ], + lorentz = [ L.FFV2, L.FFV5 ], + couplings = {(0,1):C.GC_34,(0,0):C.GC_29}) + +V_46 = Vertex(name = 'V_46', + particles = [ P.u__tilde__, P.u, P.a ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_2}) + +V_47 = Vertex(name = 'V_47', + particles = [ P.c__tilde__, P.c, P.a ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_2}) + +V_48 = Vertex(name = 'V_48', + particles = [ P.t__tilde__, P.t, P.a ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_2}) + +V_49 = Vertex(name = 'V_49', + particles = [ P.u__tilde__, P.u, P.g ], + color = [ 'T(3,2,1)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_7}) + +V_50 = Vertex(name = 'V_50', + particles = [ P.c__tilde__, P.c, P.g ], + color = [ 'T(3,2,1)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_7}) + +V_51 = Vertex(name = 'V_51', + particles = [ P.t__tilde__, P.t, P.g ], + color = [ 'T(3,2,1)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_7}) + +V_52 = Vertex(name = 'V_52', + particles = [ P.d__tilde__, P.u, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_20}) + +V_53 = Vertex(name = 'V_53', + particles = [ P.s__tilde__, P.u, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_21}) + +V_54 = Vertex(name = 'V_54', + particles = [ P.b__tilde__, P.u, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_22}) + +V_55 = Vertex(name = 'V_55', + particles = [ P.d__tilde__, P.c, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_23}) + +V_56 = Vertex(name = 'V_56', + particles = [ P.s__tilde__, P.c, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_24}) + +V_57 = Vertex(name = 'V_57', + particles = [ P.b__tilde__, P.c, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_25}) + +V_58 = Vertex(name = 'V_58', + particles = [ P.d__tilde__, P.t, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_26}) + +V_59 = Vertex(name = 'V_59', + particles = [ P.s__tilde__, P.t, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_27}) + +V_60 = Vertex(name = 'V_60', + particles = [ P.b__tilde__, P.t, P.W__minus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_28}) + +V_61 = Vertex(name = 'V_61', + particles = [ P.u__tilde__, P.u, P.Z ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2, L.FFV6 ], + couplings = {(0,0):C.GC_30,(0,1):C.GC_33}) + +V_62 = Vertex(name = 'V_62', + particles = [ P.c__tilde__, P.c, P.Z ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2, L.FFV6 ], + couplings = {(0,0):C.GC_30,(0,1):C.GC_33}) + +V_63 = Vertex(name = 'V_63', + particles = [ P.t__tilde__, P.t, P.Z ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2, L.FFV6 ], + couplings = {(0,0):C.GC_30,(0,1):C.GC_33}) + +V_64 = Vertex(name = 'V_64', + particles = [ P.d__tilde__, P.d, P.a ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_1}) + +V_65 = Vertex(name = 'V_65', + particles = [ P.s__tilde__, P.s, P.a ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_1}) + +V_66 = Vertex(name = 'V_66', + particles = [ P.b__tilde__, P.b, P.a ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_1}) + +V_67 = Vertex(name = 'V_67', + particles = [ P.d__tilde__, P.d, P.g ], + color = [ 'T(3,2,1)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_7}) + +V_68 = Vertex(name = 'V_68', + particles = [ P.s__tilde__, P.s, P.g ], + color = [ 'T(3,2,1)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_7}) + +V_69 = Vertex(name = 'V_69', + particles = [ P.b__tilde__, P.b, P.g ], + color = [ 'T(3,2,1)' ], + lorentz = [ L.FFV1 ], + couplings = {(0,0):C.GC_7}) + +V_70 = Vertex(name = 'V_70', + particles = [ P.u__tilde__, P.d, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_49}) + +V_71 = Vertex(name = 'V_71', + particles = [ P.c__tilde__, P.d, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_52}) + +V_72 = Vertex(name = 'V_72', + particles = [ P.t__tilde__, P.d, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_55}) + +V_73 = Vertex(name = 'V_73', + particles = [ P.u__tilde__, P.s, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_50}) + +V_74 = Vertex(name = 'V_74', + particles = [ P.c__tilde__, P.s, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_53}) + +V_75 = Vertex(name = 'V_75', + particles = [ P.t__tilde__, P.s, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_56}) + +V_76 = Vertex(name = 'V_76', + particles = [ P.u__tilde__, P.b, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_51}) + +V_77 = Vertex(name = 'V_77', + particles = [ P.c__tilde__, P.b, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_54}) + +V_78 = Vertex(name = 'V_78', + particles = [ P.t__tilde__, P.b, P.W__plus__ ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2 ], + couplings = {(0,0):C.GC_57}) + +V_79 = Vertex(name = 'V_79', + particles = [ P.d__tilde__, P.d, P.Z ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2, L.FFV4 ], + couplings = {(0,0):C.GC_29,(0,1):C.GC_33}) + +V_80 = Vertex(name = 'V_80', + particles = [ P.s__tilde__, P.s, P.Z ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2, L.FFV4 ], + couplings = {(0,0):C.GC_29,(0,1):C.GC_33}) + +V_81 = Vertex(name = 'V_81', + particles = [ P.b__tilde__, P.b, P.Z ], + color = [ 'Identity(1,2)' ], + lorentz = [ L.FFV2, L.FFV4 ], + couplings = {(0,0):C.GC_29,(0,1):C.GC_33}) + diff --git a/Leptophilic_UFO/write_param_card.py b/Leptophilic_UFO/write_param_card.py new file mode 100644 index 0000000000000000000000000000000000000000..c97938ad77736e9cf9eac4fe6e938fca2da7fd7a --- /dev/null +++ b/Leptophilic_UFO/write_param_card.py @@ -0,0 +1,207 @@ + +__date__ = "02 Aug 2012" +__author__ = 'olivier.mattelaer@uclouvain.be' + +from function_library import * + +class ParamCardWriter(object): + + header = \ + """######################################################################\n""" + \ + """## PARAM_CARD AUTOMATICALY GENERATED BY THE UFO #####################\n""" + \ + """######################################################################\n""" + + def __init__(self, filename, list_of_parameters=None, generic=False): + """write a valid param_card.dat""" + + if not list_of_parameters: + from parameters import all_parameters + list_of_parameters = [param for param in all_parameters if \ + param.nature=='external'] + + self.generic_output = generic + if generic: + self.define_not_dep_param(list_of_parameters) + + + self.fsock = open(filename, 'w') + self.fsock.write(self.header) + + self.write_card(list_of_parameters) + self.fsock.close() + + def define_not_dep_param(self, list_of_parameters): + """define self.dep_mass and self.dep_width in case that they are + requested in the param_card.dat""" + from particles import all_particles + + self.dep_mass = [(part, part.mass) for part in all_particles \ + if part.pdg_code > 0 and \ + part.mass not in list_of_parameters] + self.dep_width = [(part, part.width) for part in all_particles\ + if part.pdg_code > 0 and \ + part.width not in list_of_parameters] + + @staticmethod + def order_param(obj1, obj2): + """ order parameter of a given block """ + + maxlen = min([len(obj1.lhacode), len(obj2.lhacode)]) + + for i in range(maxlen): + if obj1.lhacode[i] < obj2.lhacode[i]: + return -1 + elif obj1.lhacode[i] == obj2.lhacode[i]: + return 0 + else: + return 1 + #identical up to the first finish + if len(obj1.lhacode) > len(obj2.lhacode): + return 1 + elif len(obj1.lhacode) == len(obj2.lhacode): + return 0 + else: + return -1 + + def write_card(self, all_ext_param): + """ """ + + # list all lhablock + all_lhablock = set([param.lhablock for param in all_ext_param]) + + # ordonate lhablock alphabeticaly + all_lhablock = list(all_lhablock) + all_lhablock.sort() + # put at the beginning SMINPUT + MASS + DECAY + for name in ['DECAY', 'MASS','SMINPUTS']: + if name in all_lhablock: + all_lhablock.remove(name) + all_lhablock.insert(0, name) + + for lhablock in all_lhablock: + self.write_block(lhablock) + need_writing = [ param for param in all_ext_param if \ + param.lhablock == lhablock] + need_writing.sort(self.order_param) + [self.write_param(param, lhablock) for param in need_writing] + + if self.generic_output: + if lhablock in ['MASS', 'DECAY']: + self.write_dep_param_block(lhablock) + + if self.generic_output: + self.write_qnumber() + + def write_block(self, name): + """ write a comment for a block""" + + self.fsock.writelines( + """\n###################################""" + \ + """\n## INFORMATION FOR %s""" % name.upper() +\ + """\n###################################\n""" + ) + if name!='DECAY': + self.fsock.write("""Block %s \n""" % name) + + def write_param(self, param, lhablock): + + lhacode=' '.join(['%3s' % key for key in param.lhacode]) + if lhablock != 'DECAY': + text = """ %s %e # %s \n""" % (lhacode, complex(param.value).real, param.name ) + else: + text = '''DECAY %s %e \n''' % (lhacode, complex(param.value).real) + self.fsock.write(text) + + + + + def write_dep_param_block(self, lhablock): + import cmath + from parameters import all_parameters + from particles import all_particles + for parameter in all_parameters: + exec("%s = %s" % (parameter.name, parameter.value)) + text = "## Not dependent paramater.\n" + text += "## Those values should be edited following analytical the \n" + text += "## analytical expression. Some generator could simply ignore \n" + text += "## those values and use the analytical expression\n" + + if lhablock == 'MASS': + data = self.dep_mass + prefix = " " + else: + data = self.dep_width + prefix = "DECAY " + + for part, param in data: + if isinstance(param.value, str): + value = complex(eval(param.value)).real + else: + value = param.value + + text += """%s %s %f # %s : %s \n""" %(prefix, part.pdg_code, + value, part.name, param.value) + # If more than a particles has the same mass/width we need to write it here + # as well + if lhablock == 'MASS': + arg = 'mass' + done = [part for (part, param) in self.dep_mass] + else: + arg = 'width' + done = [part for (part, param) in self.dep_width] + for particle in all_particles: + if particle.pdg_code <0: + continue + is_define = True + if particle not in done: + if getattr(particle, arg).lhacode[0] != particle.pdg_code: + is_define = False + if not is_define: + value = float(particle.get(arg).value ) + name = particle.get(arg).name + text += """%s %s %f # %s : %s \n""" %(prefix, particle.pdg_code, + value, particle.name, name) + + + + + self.fsock.write(text) + + sm_pdg = [1,2,3,4,5,6,11,12,13,13,14,15,16,21,22,23,24,25] + data="""Block QNUMBERS %(pdg)d # %(name)s + 1 %(charge)d # 3 times electric charge + 2 %(spin)d # number of spin states (2S+1) + 3 %(color)d # colour rep (1: singlet, 3: triplet, 8: octet) + 4 %(antipart)d # Particle/Antiparticle distinction (0=own anti)\n""" + + def write_qnumber(self): + """ write qnumber """ + from particles import all_particles + import particles + print particles.__file__ + text="""#===========================================================\n""" + text += """# QUANTUM NUMBERS OF NEW STATE(S) (NON SM PDG CODE)\n""" + text += """#===========================================================\n\n""" + + for part in all_particles: + if part.pdg_code in self.sm_pdg or part.pdg_code < 0: + continue + text += self.data % {'pdg': part.pdg_code, + 'name': part.name, + 'charge': 3 * part.charge, + 'spin': part.spin, + 'color': part.color, + 'antipart': part.name != part.antiname and 1 or 0} + + self.fsock.write(text) + + + + + + + +if '__main__' == __name__: + ParamCardWriter('./param_card.dat', generic=True) + print 'write ./param_card.dat' +