Merge lp:~maddevelopers/mg5amcnlo/fix_color_basis_sextet into lp:~madteam/mg5amcnlo/trunk

Proposed by Pierre Artoisenet
Status: Merged
Merged at revision: 175
Proposed branch: lp:~maddevelopers/mg5amcnlo/fix_color_basis_sextet
Merge into: lp:~madteam/mg5amcnlo/trunk
Diff against target: 4761 lines (+4005/-102)
49 files modified
HELAS/hstlxx.F (+2/-1)
HELAS/httaxx.F (+3/-3)
HELAS/httsxx.F (+3/-3)
HELAS/hvvhxx.F (+3/-3)
HELAS/hvvshx.F (+3/-3)
HELAS/hvvvxx.F (+3/-3)
HELAS/iosxxx.F (+3/-0)
HELAS/jioxxx.F (+0/-1)
HELAS/jvshxx.F (+3/-3)
HELAS/jvsshx.F (+3/-3)
HELAS/jvtaxx.F (+3/-3)
HELAS/jvvsxx.F (+3/-3)
HELAS/jvvtlx.F (+3/-3)
HELAS/sstlxx.F (+3/-1)
HELAS/ttsaxx.F (+3/-3)
HELAS/ttssxx.F (+3/-3)
HELAS/usslxx.F (+4/-1)
HELAS/utsaxx.F (+3/-3)
HELAS/utssxx.F (+3/-3)
HELAS/uvvaxx.F (+3/-3)
HELAS/uvvvlx.F (+3/-3)
HELAS/vvshxx.F (+3/-3)
HELAS/vvsshx.F (+3/-3)
HELAS/vvtaxx.F (+3/-3)
HELAS/vvvsxx.F (+3/-3)
HELAS/vvvtlx.F (+3/-3)
Template/SubProcesses/cluster.f (+12/-2)
Template/bin/plot (+2/-0)
UpdateNotes.txt (+13/-0)
aloha/aloha_writers.py (+6/-1)
madgraph/VERSION (+2/-3)
madgraph/core/color_algebra.py (+58/-0)
madgraph/core/color_amp.py (+8/-0)
madgraph/interface/cmd_interface.py (+175/-5)
madgraph/iolibs/export_v4.py (+21/-0)
models/TopEffTh/TopEffTh.log (+79/-0)
models/TopEffTh/__init__.py (+22/-0)
models/TopEffTh/coupling_orders.py (+20/-0)
models/TopEffTh/couplings.py (+535/-0)
models/TopEffTh/function_library.py (+54/-0)
models/TopEffTh/lorentz.py (+367/-0)
models/TopEffTh/object_library.py (+245/-0)
models/TopEffTh/parameters.py (+705/-0)
models/TopEffTh/particles.py (+449/-0)
models/TopEffTh/vertices.py (+863/-0)
models/TopEffTh/write_param_card.py (+181/-0)
tests/acceptance_tests/test_cmd.py (+3/-2)
tests/unit_tests/iolibs/test_export_v4.py (+64/-0)
tests/unit_tests/various/test_diquark_models.py (+46/-22)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/fix_color_basis_sextet
Reviewer Review Type Date Requested Status
Johan Alwall (community) Approve
Review via email: mp+78798@code.launchpad.net

Description of the change

Nature of the problem:

The decomposition into color subamplitudes is incorrect for most processes
in the diquark model

Origin of the problem:

Although the current implementation in the trunk gives the correct value for
the matrix element squared, there is a problem with the decomposition into
color subamplitudes: in some cases there are too many subamplitudes, and
and they are not gauge invariant.

One example: for g g > g six six~, the correct decomposition involves
only 13 subamplitudes, whereas the current version in the trunk returns
104 jamp's.

The origin of the problem is that the algorithm fails to recognize
identical color strings in some cases, because the summation
indices are named in a different way and/or the symmetry propeties of
the Clebsch Gordan coefficients K6 and K6Bar are not taken into account.
As a result, each color subamplitude in the correct decomposition appears
in many different formats in the current version of the code, and this
gives rise to a very large number of (non gauge-invariant) Jamp's.

In this branch the problem has been solved by forcing a specific convention
for the summation indices and for the i,j indices in K6 and K6Bar.

I added a test in the file tests/unit_tests/various/test_diquark_models.py

ATTENTION:

  1. I had to change the previous tests in test_diquark_models.py
     because the color flow decomposition did not match exactly the
     reference results after I modified color_amp.py and color_algebra.py.
     The results before/after the modifications were consitent with each
     other, but up to a re-labeling of indices (which is conventional).
     So I had to use another convention for labeling the indices in the
     reference color flow strucures in test_diquark_models.py.
     Johan: can you confirm that it is ok I edited your own tests ?

  2. The tests/test_manager.py -p -A failed BEFORE I introduced any modification
     in the code. After the modifs, I got exactly the same error report.
     I copy it below

  3. The branch is originally a copy from the trunk, but it runs in the debbug mode

Pierre

To post a comment you must log in.
Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Pierre,

Many thanks for your excellent report, and for your great work with this revision.
To answer your questions:
1. It's not a problem if tests need to be modified due to corrections (or simply due to changes) in the code, as long as these modifications are carefully reviewed and fully understood. In your case, this is clearly the case.
2. Could you please copy the error report from tests/test_manager.py -p A ?
3. Yes this is normal.

Comments on your revision:
Awesome job! My only comment is that perhaps you might want to rename the function order_summation_for_K to something generic like order_summation? I guess this same issue might happen for other color objects in the future, in which case the function can be extended also for those objects, rather than adding new functions. As long as it's clearly explained in the comments and doc strings, it should still be clear.
Please also add some comments about how the ordering works. Right now, it's quite difficult to tell which ordering you have chosen for the indices. Better to over-comment than to undercomment.

Many thanks,
Johan

review: Needs Fixing
Revision history for this message
Pierre Artoisenet (partois) wrote :
Download full text (11.1 KiB)

Hi Johan,

Thank you for your prompt reaction on this.
Sorry, I forgot to copy the error report from tests/test_manager.py -p A
Now it can be read below.

As you pointed out, the new routine may be generalized in the future, so following
your suggestion I have renamed the routine into "order_summation" and put
also some comments about the order that is chosen for the summation indices.

I commited the modifications using

bzr commit -m "description of the modifs"

but they do not appear on the webpage. Should I use again

bzr push lp:~maddevelopers/madgraph5/fix_color_basis_sextet

to force these modifications on the Launchpad (public version) ?

Sorry for these basic questions, and thank you for your help!

Cheers,
Pierre

F.............FE.....E...
======================================================================
ERROR: test_output_standalone_directory (tests.acceptance_tests.test_cmd.TestCmdShell2)
Test command 'output' with path
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/acceptance_tests/test_cmd.py", line 316, in test_output_standalone_directory
    self.do('output standalone %s' % self.out_dir)
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/acceptance_tests/test_cmd.py", line 154, in do
    self.cmd.exec_cmd(line)
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/interface/extended_cmd.py", line 171, in exec_cmd
    stop = cmd.Cmd.onecmd(self, line)
  File "/localstore/theorie/partois/lib/python2.7/cmd.py", line 219, in onecmd
    return func(arg)
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/interface/cmd_interface.py", line 2740, in do_output
    self.finalize(nojpeg)
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/interface/cmd_interface.py", line 2983, in finalize
    online)
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/iolibs/export_v4.py", line 766, in finalize_v4_directory
    self.make()
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/iolibs/export_v4.py", line 754, in make
    misc.compile(arg=['../lib/libdhelas.a'], cwd=source_dir, mode='fortran')
  File "/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/iolibs/misc.py", line 157, in compile
    raise MadGraph5Error, error_text
MadGraph5Error: A compilation Error occurs when trying to compile /localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/AUTO_TEST_MG5/Source.
The compilation fails with the following output message:
  cd DHELAS; make
  make[1]: Entering directory `/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/AUTO_TEST_MG5/Source/DHELAS'
  g77 -O -w -ffixed-line-length-132 -c -o httsxx.o httsxx.F
  httsxx.F: In subroutine `httsxx':
  httsxx.F:24:
           include "dimension.inc"
           ^
  Unable to open INCLUDE file `dimension.inc' at (^)
  httsxx.F:25:
           double complex tc1(DIM),htts(DIM),sc(DIM),tc2...

175. By Pierre Artoisenet

Added first line of text

176. By mattelaer-olivier

fix the error in the acceptance test. A very stupid mistake

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

I've fix one of the error of the acceptance test.
The remaining three are fixed in the new_install_cmd branch.
So my proposal is to merge this branch in that one.
and merge both of them in the trunk.

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Pierre,

Excellent work. I approve the merge.

To perform the merge, first merge with the latest trunk and new_install_command branch
bzr merge lp:madgraph5
Fix the conflicts (there should be in VERSION and UpdateNotes), and do
bzr resolve
bzr commit -m "Merged with latest version of trunk, v. 1.3.20"
Next, merge with the new_install_command branch:
bzr merge lp:~maddevelopers/madgraph5/new_install_command
Same thing, fix the conflicts (note that since we do both these branches together, you only need one version number, v. 1.3.21, and don't forget to set today's date in both VERSION and UpdateNotes), resolve and commit. Then push, and let us take a look before you merge with the trunk.

For the actual merge, do the following:
bzr branch lp:madgraph5
cd madgraph5
bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
bzr commit -m "Merged up to version 1.3.21 (the fix_color_basis_sextet and new_install_command branches)"
Now create a release:
bin/create_release.py
Note that you need epydoc and gpg installed on your computer (and gpg set up) to do this.
Once this is done, and there are no errors, you can push to lp:madgraph5.

Now replace the download file on Launchpad (click on "All downloads"), add the new lines from UpdateNotes to the release info and the release 1.3.0 information (look through the page and you'll see where to make changes), and update both UIUC and UCL cluster. This step is crucial, since otherwise the download links won't work on the clusters.

Please let us know if you have any questions, and also let us know once it's all done so we can double-check.

Thanks!
Johan

review: Approve
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

> Note that you need epydoc and gpg installed on your computer (and
> gpg set up) to do this.

Concerning this point. gpg is not mandatory (I never succeed to make
it work due to compatibility issue with Mac10.5)
while epydoc is 100% require (you can install it from http://epydoc.sourceforge.net/installing.html)

Otherwise note that the script create_release test that
1) all your modification are committed.
2) that your version number has comment in the Update Note.
3) that the date is today.
And create a warning/crash if they are a problem.
As you will note, this script will also automatically test the full
set of unit test and acceptance test.
If a test fails, then the .tar.gz will not be created

Cheers,

Olivier

On 10-oct.-11, at 20:03, Johan Alwall wrote:

> Review: Approve
>
> Hello Pierre,
>
> Excellent work. I approve the merge.
>
> To perform the merge, first merge with the latest trunk and
> new_install_command branch
> bzr merge lp:madgraph5
> Fix the conflicts (there should be in VERSION and UpdateNotes), and do
> bzr resolve
> bzr commit -m "Merged with latest version of trunk, v. 1.3.20"
> Next, merge with the new_install_command branch:
> bzr merge lp:~maddevelopers/madgraph5/new_install_command
> Same thing, fix the conflicts (note that since we do both these
> branches together, you only need one version number, v. 1.3.21, and
> don't forget to set today's date in both VERSION and UpdateNotes),
> resolve and commit. Then push, and let us take a look before you
> merge with the trunk.
>
> For the actual merge, do the following:
> bzr branch lp:madgraph5
> cd madgraph5
> bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
> bzr commit -m "Merged up to version 1.3.21 (the
> fix_color_basis_sextet and new_install_command branches)"
> Now create a release:
> bin/create_release.py
> Note that you need epydoc and gpg installed on your computer (and
> gpg set up) to do this.
> Once this is done, and there are no errors, you can push to
> lp:madgraph5.
>
> Now replace the download file on Launchpad (click on "All
> downloads"), add the new lines from UpdateNotes to the release info
> and the release 1.3.0 information (look through the page and you'll
> see where to make changes), and update both UIUC and UCL cluster.
> This step is crucial, since otherwise the download links won't work
> on the clusters.
>
> Please let us know if you have any questions, and also let us know
> once it's all done so we can double-check.
>
> Thanks!
> Johan
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/
> fix_color_basis_sextet/+merge/78798
> You are subscribed to branch lp:madgraph5.

Revision history for this message
Pierre Artoisenet (partois) wrote :
Download full text (5.1 KiB)

Hi Johan, hi Olivier,

many thanks for the clear information below!

The merge with the version in the trunk (lp:madgraph5) went fine, I think,
but I have some problems for the merge with the new_install_command
branch:

The first problem is that I am not sure how to solve the conflict in
UpdateNotes, since there are 2 version 1.3.20 :

<<<<<<< TREE
1.3.21 (11/10/11) PA: fix the problem of degenerate color basis in the
                       diquark sextet model

1.3.20 (09/10/11) JA: Fixed bug in myamp.f that created a hard stop
                       error for certain cases with many processes with
                       different propagators in the same subprocess dir.
=======
1.3.20 (07/10/11) OM: Add a new command: install.
                       This allow to install quite easily different package
                       devellop for Madgraph/MadEvent. The list of
available
                       package are
pythia-pgs/MadAnalysis/ExRootAnalysis/Delphes
                   OM: Adding TopEffth Model
                   OM: Improve display particles and autocompletion in
presence
                       of nonpropagating particles
                   OM: Fix Aloha bug linked to four fermion operator
>>>>>>> MERGE-SOURCE

The second problem is that "test_manager.py" is not working properly
after this second merge:

./tests/test_manager.py
Traceback (most recent call last):
   File "./tests/test_manager.py", line 377, in <module>
     package=options.path)
   File "./tests/test_manager.py", line 70, in run
     re_opt=re_opt):
   File "./tests/test_manager.py", line 117, in __iter__
     self._check_if_obj_build()
   File "./tests/test_manager.py", line 113, in _check_if_obj_build
     self.collect_dir(self.package, checking=True)
   File "./tests/test_manager.py", line 149, in collect_dir
     self.collect_dir(directory + '/' + name, local_check)
   File "./tests/test_manager.py", line 147, in collect_dir
     self.collect_file(directory + '/' + name, local_check)
   File "./tests/test_manager.py", line 158, in collect_file
     __import__(pyname)
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/unit_tests/interface/test_cmd.py",
line 23, in <module>
     class TestValidCmd(unittest.TestCase):
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/unit_tests/interface/test_cmd.py",
line 26, in TestValidCmd
     cmd = cmd.MadGraphCmdShell()
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/interface/cmd_interface.py",
line 1507, in __init__
     CmdExtended.__init__(self, *completekey, **stdin)
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/interface/cmd_interface.py",
line 111, in __init__
     info = misc.get_pkg_info()
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/iolibs/misc.py",
line 64, in get_pkg_info
     parse_info_str)
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/madgraph/iolibs/files.py",
line 40, in read_from_file
     except IOError, (errno, strerror):
ValueError: need more than 1 value to unpack
...

Read more...

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :
Download full text (6.3 KiB)

Hi Pierre,

Concerning the conflict:
The main idea is the same as cvs
in your file you have
tag <<<<<
=====
 >>>>>
delimitting conflict area.
In order to help you, you have three aditional file
NAME.this (your file before the merge)
NAM.other (the file with which you are doing the merge)
NAME.base (the common version of the file on which are done the
merging comparison)
Note that in 99% of the cases, you don't need those files.

The idea is to suppress from the file all tag
 >>>>>> ===== and <<<<<
(as in cvs) and have replace the area with the correct part off course.

When this is done, you can do
bzr resolve
and if you done forget any conflict this will work. (otherwise, it
will indicate which files still contains conflict)

For the test, manager, that's a problem linked to the conflict, when
those will be resolve, the test manager should pass.

Cheers,

Olivier

On 11-oct.-11, at 02:43, Pierre Artoisenet wrote:

>
> Hi Johan, hi Olivier,
>
> many thanks for the clear information below!
>
> The merge with the version in the trunk (lp:madgraph5) went fine, I
> think,
> but I have some problems for the merge with the new_install_command
> branch:
>
> The first problem is that I am not sure how to solve the conflict in
> UpdateNotes, since there are 2 version 1.3.20 :
>
> <<<<<<< TREE
> 1.3.21 (11/10/11) PA: fix the problem of degenerate color basis in the
> diquark sextet model
>
> 1.3.20 (09/10/11) JA: Fixed bug in myamp.f that created a hard stop
> error for certain cases with many processes with
> different propagators in the same subprocess dir.
> =======
> 1.3.20 (07/10/11) OM: Add a new command: install.
> This allow to install quite easily different
> package
> devellop for Madgraph/MadEvent. The list of
> available
> package are
> pythia-pgs/MadAnalysis/ExRootAnalysis/Delphes
> OM: Adding TopEffth Model
> OM: Improve display particles and autocompletion in
> presence
> of nonpropagating particles
> OM: Fix Aloha bug linked to four fermion operator
>>>>>>>> MERGE-SOURCE
>
>
> The second problem is that "test_manager.py" is not working properly
> after this second merge:
>
> ./tests/test_manager.py
> Traceback (most recent call last):
> File "./tests/test_manager.py", line 377, in <module>
> package=options.path)
> File "./tests/test_manager.py", line 70, in run
> re_opt=re_opt):
> File "./tests/test_manager.py", line 117, in __iter__
> self._check_if_obj_build()
> File "./tests/test_manager.py", line 113, in _check_if_obj_build
> self.collect_dir(self.package, checking=True)
> File "./tests/test_manager.py", line 149, in collect_dir
> self.collect_dir(directory + '/' + name, local_check)
> File "./tests/test_manager.py", line 147, in collect_dir
> self.collect_file(directory + '/' + name, local_check)
> File "./tests/test_manager.py", line 158, in collect_file
> __import__(pyname)
> File
> "/localstore/theorie/partois/madgraph5_branches/
> fix_color_basis_sextet/tests/unit_tests/interface/test_cmd....

Read more...

Revision history for this message
Pierre Artoisenet (partois) wrote :
Download full text (9.7 KiB)

Hi Olivier,

Thanks for these info, now the tests are indeed running.

If I remove all tags >>>>>> ===== and <<<<<,
I will have two versions 1.3.20. Should I leave the UpdateNotes.txt
file with these two versions 1.3.20 ?

Also now I have got two error reports:

./tests/test_manager.py
..............................................................................................................................................................................................................................................................................................................................................F..........................................................................................................................................
======================================================================
FAIL: test_get_momenta
(tests.unit_tests.various.test_process_checks.TestMatrixElementChecker)
Test the get_momenta function
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/unit_tests/various/test_process_checks.py",
line 76, in test_get_momenta
     self.assertAlmostEqual(mass, 0., 8)
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/unit_tests/__init__.py",
line 52, in assertAlmostEqual
     unittest.TestCase.assertAlmostEqual(self, a, b, *opt, **arg)
AssertionError: -6.83940015733e-09 != 0.0 within 8 digits

----------------------------------------------------------------------
Ran 473 tests in 37.643s

FAILED (failures=1)

./tests/test_manager.py -p -A
Traceback (most recent call last):
   File "./tests/test_manager.py", line 377, in <module>
     package=options.path)
   File "./tests/test_manager.py", line 70, in run
     re_opt=re_opt):
   File "./tests/test_manager.py", line 117, in __iter__
     self._check_if_obj_build()
   File "./tests/test_manager.py", line 113, in _check_if_obj_build
     self.collect_dir(self.package, checking=True)
   File "./tests/test_manager.py", line 134, in collect_dir
     for name in os.listdir(os.path.join(root_path,directory)):
OSError: [Errno 2] No such file or directory:
'/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/-A/'
[partois@clain fix_color_basis_sextet]$ ./tests/test_manager.py -p A
F........................
======================================================================
FAIL: test_config (tests.acceptance_tests.test_cmd.TestCmdShell1)
check that configuration file is at default value
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/acceptance_tests/test_cmd.py",
line 127, in test_config
     self.assertEqual(launch_ext.open_file.web_browser, 'gv')
AssertionError: 'firefox' != 'gv'

----------------------------------------------------------------------
Ran 25 tests in 71.081s

FAILED (failures=1)

Cheers,
Pierre

On Tue, 11 Oct 2011, Olivier Mattelaer wrote:

> Hi Pierre,
>
> Concerning the conflict:
> The main idea is th...

Read more...

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Pierre,

For the UpdateNotes: The only version which is released is (of course) the trunk. Any other version numbers are temporary and irrelevant. As I wrote in my explanation above, you should combine the two versions into one release:

1.3.21 (11/10/11) PA: fix the problem of degenerate color basis in the
                       diquark sextet model
                   OM: Add a new command: install.
                       This allow to install quite easily different package
                       devellop for Madgraph/MadEvent. The list of
available
                       package are
pythia-pgs/MadAnalysis/ExRootAnalysis/Delphes
                   OM: Adding TopEffth Model
                   OM: Improve display particles and autocompletion in
presence
                       of nonpropagating particles
                   OM: Fix Aloha bug linked to four fermion operator

1.3.20 (09/10/11) JA: Fixed bug in myamp.f that created a hard stop
                       error for certain cases with many processes with
                       different propagators in the same subprocess dir.
...

Cheers,
Johan

Revision history for this message
Pierre Artoisenet (partois) wrote :

Hi Johan,

Ok I understand now... I made the modifications in the
UpdateNotes.txt file, and the test ./tests/test_manager.py ran
successfully (magic!)

Unfortunately I still have a problem with the second test:

./tests/test_manager.py -p A
F........................
======================================================================
FAIL: test_config (tests.acceptance_tests.test_cmd.TestCmdShell1)
check that configuration file is at default value
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/localstore/theorie/partois/madgraph5_branches/fix_color_basis_sextet/tests/acceptance_tests/test_cmd.py",
line 127, in test_config
     self.assertEqual(launch_ext.open_file.web_browser, 'gv')
AssertionError: 'firefox' != 'gv'

----------------------------------------------------------------------
Ran 25 tests in 73.986s

FAILED (failures=1)

Cheers,
Pierre

On Tue, 11 Oct 2011, Johan Alwall wrote:

> Hello Pierre,
>
> For the UpdateNotes: The only version which is released is (of course) the trunk. Any other version numbers are temporary and irrelevant. As I wrote in my explanation above, you should combine the two versions into one release:
>
> 1.3.21 (11/10/11) PA: fix the problem of degenerate color basis in the
> diquark sextet model
> OM: Add a new command: install.
> This allow to install quite easily different package
> devellop for Madgraph/MadEvent. The list of
> available
> package are
> pythia-pgs/MadAnalysis/ExRootAnalysis/Delphes
> OM: Adding TopEffth Model
> OM: Improve display particles and autocompletion in
> presence
> of nonpropagating particles
> OM: Fix Aloha bug linked to four fermion operator
>
> 1.3.20 (09/10/11) JA: Fixed bug in myamp.f that created a hard stop
> error for certain cases with many processes with
> different propagators in the same subprocess dir.
> ...
>
> Cheers,
> Johan
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/fix_color_basis_sextet/+merge/78798
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/madgraph5/fix_color_basis_sextet.
>

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :
Download full text (11.8 KiB)

Concerning this error:

> Traceback (most recent call last):
> File
> "/localstore/theorie/partois/madgraph5_branches/
> fix_color_basis_sextet/tests/unit_tests/various/
> test_process_checks.py",
> line 76, in test_get_momenta
> self.assertAlmostEqual(mass, 0., 8)
> File
> "/localstore/theorie/partois/madgraph5_branches/
> fix_color_basis_sextet/tests/unit_tests/__init__.py",
> line 52, in assertAlmostEqual
> unittest.TestCase.assertAlmostEqual(self, a, b, *opt, **arg)
> AssertionError: -6.83940015733e-09 != 0.0 within 8 digits

The test is in fact fine but probably just above the trigger of the
error. Since this test is base on a random number, this might be pass
the next time.

> ======================================================================
> FAIL: test_config (tests.acceptance_tests.test_cmd.TestCmdShell1)
> check that configuration file is at default value
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File
> "/localstore/theorie/partois/madgraph5_branches/
> fix_color_basis_sextet/tests/acceptance_tests/test_cmd.py",
> line 127, in test_config
> self.assertEqual(launch_ext.open_file.web_browser, 'gv')
> AssertionError: 'firefox' != 'gv'

Did you pull my modifications on this test?
it looks not.

My advice is to do the following
a) bzr commit
b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
This one will probably fail, if so, you are then force to run
bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
and then see if the test pass.

Cheers,

olivier

On 11-oct.-11, at 03:38, Pierre Artoisenet wrote:

>
> Hi Olivier,
>
> Thanks for these info, now the tests are indeed running.
>
> If I remove all tags >>>>>> ===== and <<<<<,
> I will have two versions 1.3.20. Should I leave the UpdateNotes.txt
> file with these two versions 1.3.20 ?
>
>
> Also now I have got two error reports:
>
> ./tests/test_manager.py
> ..............................................................................................................................................................................................................................................................................................................................................F..........................................................................................................................................
> ======================================================================
> FAIL: test_get_momenta
> (tests
> .unit_tests.various.test_process_checks.TestMatrixElementChecker)
> Test the get_momenta function
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File
> "/localstore/theorie/partois/madgraph5_branches/
> fix_color_basis_sextet/tests/unit_tests/various/
> test_process_checks.py",
> line 76, in test_get_momenta
> self.assertAlmostEqual(mass, 0., 8)
> File
> "/localstore/theorie/partois/madgraph5_branches/
> fix_color_basis_sextet/tests/unit_tests/__init__.py",
> line 52, in assertAlmostEqual
> unittest.TestCase.assertAlmostEqual(self, a, b, *opt, **arg)
> Asserti...

Revision history for this message
Johan Alwall (johan-alwall) wrote :

> My advice is to do the following
> a) bzr commit
> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
> This one will probably fail, if so, you are then force to run
> bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
> and then see if the test pass.

If you do a merge, you lose all commit messages between the commit and the merge, which looks quite ugly.

In fact, the correct way of doing this is
a) do NOT commit but save all files if you have them open
b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
if this fails, do
bzr uncommit
try to pull again - if it still doesn't work, do another uncommit, etc. until the pull works.
Finally, commit (and make sure you retain all commit messages that you have uncommitted, as well as describe additional changes).

Cheers,
Johan

Revision history for this message
Pierre Artoisenet (partois) wrote :

Ok, I eventually went through the merge procedure with the lattest trunk
and the new_install_command branch.

I am waiting for your green light to do the next step (update the version
in the trunk)

Cheers,
Pierre

On Tue, 11 Oct 2011, Johan Alwall wrote:

>> My advice is to do the following
>> a) bzr commit
>> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>> This one will probably fail, if so, you are then force to run
>> bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>> and then see if the test pass.
>
> If you do a merge, you lose all commit messages between the commit and the merge, which looks quite ugly.
>
> In fact, the correct way of doing this is
> a) do NOT commit but save all files if you have them open
> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
> if this fails, do
> bzr uncommit
> try to pull again - if it still doesn't work, do another uncommit, etc. until the pull works.
> Finally, commit (and make sure you retain all commit messages that you have uncommitted, as well as describe additional changes).
>
> Cheers,
> Johan
>
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/fix_color_basis_sextet/+merge/78798
> Your team MadTeam is subscribed to branch lp:madgraph5.
>

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

Ok for that we will need to see the last version.
So could you push it on the web.
(just make bzr push)

Cheers,

olivier

On Oct 11, 2011, at 4:37 AM, Pierre Artoisenet wrote:

>
> Ok, I eventually went through the merge procedure with the lattest
> trunk
> and the new_install_command branch.
>
> I am waiting for your green light to do the next step (update the
> version
> in the trunk)
>
> Cheers,
> Pierre
>
> On Tue, 11 Oct 2011, Johan Alwall wrote:
>
>>> My advice is to do the following
>>> a) bzr commit
>>> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>>> This one will probably fail, if so, you are then force to run
>>> bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>>> and then see if the test pass.
>>
>> If you do a merge, you lose all commit messages between the commit
>> and the merge, which looks quite ugly.
>>
>> In fact, the correct way of doing this is
>> a) do NOT commit but save all files if you have them open
>> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>> if this fails, do
>> bzr uncommit
>> try to pull again - if it still doesn't work, do another uncommit,
>> etc. until the pull works.
>> Finally, commit (and make sure you retain all commit messages that
>> you have uncommitted, as well as describe additional changes).
>>
>> Cheers,
>> Johan
>>
>> --
>> https://code.launchpad.net/~maddevelopers/madgraph5/
>> fix_color_basis_sextet/+merge/78798
>> Your team MadTeam is subscribed to branch lp:madgraph5.
>>
>
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/
> fix_color_basis_sextet/+merge/78798
> You are subscribed to branch lp:madgraph5.

177. By Pierre Artoisenet

Merged with the new_install_command branch

Revision history for this message
Pierre Artoisenet (partois) wrote :

ah yes, sorry, I have just done it

Cheers,
Pierre

On Tue, 11 Oct 2011, Olivier Mattelaer wrote:

> Ok for that we will need to see the last version.
> So could you push it on the web.
> (just make bzr push)
>
> Cheers,
>
> olivier
>
>
> On Oct 11, 2011, at 4:37 AM, Pierre Artoisenet wrote:
>
>>
>> Ok, I eventually went through the merge procedure with the lattest
>> trunk
>> and the new_install_command branch.
>>
>> I am waiting for your green light to do the next step (update the
>> version
>> in the trunk)
>>
>> Cheers,
>> Pierre
>>
>> On Tue, 11 Oct 2011, Johan Alwall wrote:
>>
>>>> My advice is to do the following
>>>> a) bzr commit
>>>> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>>>> This one will probably fail, if so, you are then force to run
>>>> bzr merge lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>>>> and then see if the test pass.
>>>
>>> If you do a merge, you lose all commit messages between the commit
>>> and the merge, which looks quite ugly.
>>>
>>> In fact, the correct way of doing this is
>>> a) do NOT commit but save all files if you have them open
>>> b) bzr pull lp:~maddevelopers/madgraph5/fix_color_basis_sextet
>>> if this fails, do
>>> bzr uncommit
>>> try to pull again - if it still doesn't work, do another uncommit,
>>> etc. until the pull works.
>>> Finally, commit (and make sure you retain all commit messages that
>>> you have uncommitted, as well as describe additional changes).
>>>
>>> Cheers,
>>> Johan
>>>
>>> --
>>> https://code.launchpad.net/~maddevelopers/madgraph5/
>>> fix_color_basis_sextet/+merge/78798
>>> Your team MadTeam is subscribed to branch lp:madgraph5.
>>>
>>
>> --
>> https://code.launchpad.net/~maddevelopers/madgraph5/
>> fix_color_basis_sextet/+merge/78798
>> You are subscribed to branch lp:madgraph5.
>
>
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/fix_color_basis_sextet/+merge/78798
> Your team MadDevelopers is subscribed to branch lp:~maddevelopers/madgraph5/fix_color_basis_sextet.
>

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Pierre,

Only one comment: Please put main modifs (such as new functionality) first in the UpdateNotes, and bug fixes at the end. The new install command is a pretty major thing, so it deserves to be first.

Cheers,
Johan

178. By Pierre Artoisenet

change the order of modifs in the UpdateNotes.txt

Revision history for this message
Pierre Artoisenet (partois) wrote :

Hi Johan,

This is done, I have just made a "bzr push"

Cheers,
Pierre

On Wed, 12 Oct 2011, Johan Alwall wrote:

> Hello Pierre,
>
> Only one comment: Please put main modifs (such as new functionality) first in the UpdateNotes, and bug fixes at the end. The new install command is a pretty major thing, so it deserves to be first.
>
> Cheers,
> Johan
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/fix_color_basis_sextet/+merge/78798
> Your team MadTeam is subscribed to branch lp:madgraph5.
>

179. By Johan Alwall

Merged with fix_bug_from_Benj: Fix bug in cluster.f in case of incompatible t-channel processes.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'HELAS/hstlxx.F'
2--- HELAS/hstlxx.F 2010-10-30 03:26:37 +0000
3+++ HELAS/hstlxx.F 2011-10-12 10:39:26 +0000
4@@ -15,7 +15,8 @@
5 c complex hst(3) : scalar current j(s':s1,s2)
6 c
7 implicit none
8- include "dimension.inc"
9+ INTEGER DIM
10+ PARAMETER(DIM=18)
11
12 double complex s1(DIM),t2(DIM),hst(DIM),dg
13 double precision q(0:3),smass,swidth,q2,gc
14
15=== modified file 'HELAS/httaxx.F'
16--- HELAS/httaxx.F 2010-10-30 03:26:37 +0000
17+++ HELAS/httaxx.F 2011-10-12 10:39:26 +0000
18@@ -19,9 +19,9 @@
19
20 implicit none
21 c-- dimension of the current set to arbitrary length
22-c INTEGER DIM
23-c PARAMETER(DIM=18)
24- include "dimension.inc"
25+ INTEGER DIM
26+ PARAMETER(DIM=18)
27+c include "dimension.inc"
28 double complex tc1(DIM),tc2(DIM),jsc(DIM)
29 double complex vertex,dj,gc(2)
30 double precision mass,width,q2,q(4)
31
32=== modified file 'HELAS/httsxx.F'
33--- HELAS/httsxx.F 2010-10-30 03:26:37 +0000
34+++ HELAS/httsxx.F 2011-10-12 10:39:26 +0000
35@@ -19,9 +19,9 @@
36
37 implicit none
38 c-- dimension of the current set to arbitrary length
39-c INTEGER DIM
40-c PARAMETER(DIM=18)
41- include "dimension.inc"
42+ INTEGER DIM
43+ PARAMETER(DIM=18)
44+c include 'dimension.inc'
45 double complex tc1(DIM),htts(DIM),sc(DIM),tc2(DIM)
46 double complex dg,g1(2)
47
48
49=== modified file 'HELAS/hvvhxx.F'
50--- HELAS/hvvhxx.F 2010-10-30 03:26:37 +0000
51+++ HELAS/hvvhxx.F 2011-10-12 10:39:26 +0000
52@@ -20,9 +20,9 @@
53 c
54 implicit none
55 c-- dimension of the current set to arbitrary length
56-c INTEGER DIM
57-c PARAMETER(DIM=18)
58- include "dimension.inc"
59+ INTEGER DIM
60+ PARAMETER(DIM=18)
61+c include "dimension.inc"
62 double complex v1(DIM),v2(DIM),jsvv(DIM),vertex1,vertex2,dj
63 double complex v12,p2v1,p1v2
64 double complex v13,v14,v23,v24,v34
65
66=== modified file 'HELAS/hvvshx.F'
67--- HELAS/hvvshx.F 2010-10-30 03:26:37 +0000
68+++ HELAS/hvvshx.F 2011-10-12 10:39:26 +0000
69@@ -19,9 +19,9 @@
70 c
71 implicit none
72 c-- dimension of the current set to arbitrary length
73-c INTEGER DIM
74-c PARAMETER(DIM=18)
75- include "dimension.inc"
76+ INTEGER DIM
77+ PARAMETER(DIM=18)
78+c include "dimension.inc"
79 double complex v1(DIM),v2(DIM),sc(DIM),hvvsh(DIM)
80 double complex hvvsh1,hvvsh2,dg,g1(2)
81 double complex v12,p2v1,p1v2,v13,v14,v23,v24,v34
82
83=== modified file 'HELAS/hvvvxx.F'
84--- HELAS/hvvvxx.F 2010-10-30 03:26:37 +0000
85+++ HELAS/hvvvxx.F 2011-10-12 10:39:26 +0000
86@@ -22,9 +22,9 @@
87 implicit none
88
89 c-- dimension of the current set to arbitrary length
90-c INTEGER DIM
91-c PARAMETER(DIM=18)
92- include "dimension.inc"
93+ INTEGER DIM
94+ PARAMETER(DIM=18)
95+c include "dimension.inc"
96 double complex ga(DIM),gb(DIM),gc(DIM),jhvvv(DIM)
97
98 double complex dvertx, vertex, vertex1, vertex2,dj
99
100=== modified file 'HELAS/iosxxx.F'
101--- HELAS/iosxxx.F 2010-10-30 03:26:37 +0000
102+++ HELAS/iosxxx.F 2011-10-12 10:39:26 +0000
103@@ -14,7 +14,10 @@
104 c
105 implicit none
106 double complex fi(6),fo(6),sc(3),gc(2),vertex
107+ INTEGER DIM
108+ PARAMETER(DIM=18)
109
110+c include 'dimension.inc'
111 #ifdef HELAS_CHECK
112 double precision p0,p1,p2,p3,q0,q1,q2,q3,r0,r1,r2,r3,pm
113 double precision epsi
114
115=== modified file 'HELAS/jioxxx.F'
116--- HELAS/jioxxx.F 2010-10-30 03:26:37 +0000
117+++ HELAS/jioxxx.F 2011-10-12 10:39:26 +0000
118@@ -24,7 +24,6 @@
119 parameter( rZero = 0.0d0, rOne = 1.0d0 )
120 double complex cImag, cZero
121 parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ) )
122-
123 #ifdef HELAS_CHECK
124 integer stdo
125 parameter( stdo = 6 )
126
127=== modified file 'HELAS/jvshxx.F'
128--- HELAS/jvshxx.F 2010-10-30 03:26:37 +0000
129+++ HELAS/jvshxx.F 2011-10-12 10:39:26 +0000
130@@ -19,9 +19,9 @@
131 c
132 implicit none
133 c-- dimension of the current set to arbitrary length
134-c INTEGER DIM
135-c PARAMETER(DIM=18)
136- include "dimension.inc"
137+ INTEGER DIM
138+ PARAMETER(DIM=18)
139+c include "dimension.inc"
140 double complex vc(DIM),sc(DIM),jvs(DIM),jvs1(DIM),jvs2(DIM)
141 double complex qvc,dg
142 double precision qp1,p12,p13,p14,p23,p24,p34
143
144=== modified file 'HELAS/jvsshx.F'
145--- HELAS/jvsshx.F 2010-10-30 03:26:37 +0000
146+++ HELAS/jvsshx.F 2011-10-12 10:39:26 +0000
147@@ -8,9 +8,9 @@
148 c
149 implicit none
150 c-- dimension of the current set to arbitrary length
151-c INTEGER DIM
152-c PARAMETER(DIM=18)
153- include "dimension.inc"
154+ INTEGER DIM
155+ PARAMETER(DIM=18)
156+c include "dimension.inc"
157 double complex vc(DIM),sc1(DIM),sc2(DIM),jvs(DIM)
158 double complex jvs1(DIM),jvs2(DIM),dg,qvc
159 double precision qp1,p12,p13,p14,p23,p24,p34
160
161=== modified file 'HELAS/jvtaxx.F'
162--- HELAS/jvtaxx.F 2010-10-30 03:26:37 +0000
163+++ HELAS/jvtaxx.F 2011-10-12 10:39:26 +0000
164@@ -20,9 +20,9 @@
165 implicit none
166
167 c dimension of the current set to arbitrary length
168-c integer DIM
169-c parameter (DIM=18)
170- include "dimension.inc"
171+ integer DIM
172+ parameter (DIM=18)
173+c include "dimension.inc"
174 double complex ga(DIM),jw(DIM),tc(DIM)
175 double complex gt1(4), gt2(4)
176 double precision q(0:3),g,q2,dv
177
178=== modified file 'HELAS/jvvsxx.F'
179--- HELAS/jvvsxx.F 2010-10-30 03:26:37 +0000
180+++ HELAS/jvvsxx.F 2011-10-12 10:39:26 +0000
181@@ -22,9 +22,9 @@
182
183 implicit none
184 c-- dimension of the current set to arbitrary length
185-c INTEGER DIM
186-c PARAMETER(DIM=18)
187- include "dimension.inc"
188+ INTEGER DIM
189+ PARAMETER(DIM=18)
190+c include "dimension.inc"
191 double complex ga(DIM),gb(DIM),jggs(DIM),sc(DIM)
192 double complex jggs1(DIM),jggs2(DIM)
193 double complex sva,svb,vab,j12(0:3)
194
195=== modified file 'HELAS/jvvtlx.F'
196--- HELAS/jvvtlx.F 2010-10-30 03:26:37 +0000
197+++ HELAS/jvvtlx.F 2011-10-12 10:39:26 +0000
198@@ -21,9 +21,9 @@
199
200 implicit none
201 c-- dimension of the current set to arbitrary length
202-c INTEGER DIM
203-c PARAMETER(DIM=18)
204- include "dimension.inc"
205+ INTEGER DIM
206+ PARAMETER(DIM=18)
207+c include "dimension.inc"
208 double complex ga(DIM),gb(DIM),jggs(DIM),sc(DIM),g2(2)
209 double complex jggs1(DIM),jggs2(DIM)
210 double complex sva,svb,vab,j12(0:3)
211
212=== modified file 'HELAS/sstlxx.F'
213--- HELAS/sstlxx.F 2010-10-30 03:26:37 +0000
214+++ HELAS/sstlxx.F 2011-10-12 10:39:26 +0000
215@@ -13,8 +13,10 @@
216 c complex vertex : amplitude gamma(s1,s2,s3)
217 c
218 implicit none
219+ INTEGER DIM
220+ PARAMETER(DIM=18)
221
222- include "dimension.inc"
223+c include "dimension.inc"
224 double complex s1(DIM),s2(DIM),t3(DIM),vertex
225 double precision gc
226
227
228=== modified file 'HELAS/ttsaxx.F'
229--- HELAS/ttsaxx.F 2010-10-30 03:26:37 +0000
230+++ HELAS/ttsaxx.F 2011-10-12 10:39:26 +0000
231@@ -17,9 +17,9 @@
232
233 implicit none
234 c-- dimension of the current set to arbitrary length
235-c INTEGER DIM
236-c PARAMETER(DIM=18)
237- include "dimension.inc"
238+ INTEGER DIM
239+ PARAMETER(DIM=18)
240+c include "dimension.inc"
241 double complex tc1(DIM),tc2(DIM),sc(DIM)
242 double complex vertex, gc(2)
243
244
245=== modified file 'HELAS/ttssxx.F'
246--- HELAS/ttssxx.F 2010-10-30 03:26:37 +0000
247+++ HELAS/ttssxx.F 2011-10-12 10:39:26 +0000
248@@ -18,9 +18,9 @@
249
250 implicit none
251 c-- dimension of the current set to arbitrary length
252-c INTEGER DIM
253-c PARAMETER(DIM=18)
254- include "dimension.inc"
255+ INTEGER DIM
256+ PARAMETER(DIM=18)
257+c include "dimension.inc"
258 double complex tc1(DIM),tc2(DIM),sc1(DIM),sc2(DIM)
259
260 double complex vertex, g1(2)
261
262=== modified file 'HELAS/usslxx.F'
263--- HELAS/usslxx.F 2010-10-30 03:26:37 +0000
264+++ HELAS/usslxx.F 2011-10-12 10:39:26 +0000
265@@ -17,7 +17,10 @@
266 c
267
268 implicit none
269- include "dimension.inc"
270+ INTEGER DIM
271+ PARAMETER(DIM=18)
272+
273+c include "dimension.inc"
274 double complex s1(DIM),s2(DIM),uss(DIM)
275 double precision xm,xw,gc
276
277
278=== modified file 'HELAS/utsaxx.F'
279--- HELAS/utsaxx.F 2010-10-30 03:26:37 +0000
280+++ HELAS/utsaxx.F 2011-10-12 10:39:26 +0000
281@@ -19,9 +19,9 @@
282
283 implicit none
284 c-- dimension of the current set to arbitrary length
285-c INTEGER DIM
286-c PARAMETER(DIM=18)
287- include "dimension.inc"
288+ INTEGER DIM
289+ PARAMETER(DIM=18)
290+c include "dimension.inc"
291 double complex tc1(DIM),jts(DIM),sc(DIM), gt(2)
292 double precision xm, xw
293
294
295=== modified file 'HELAS/utssxx.F'
296--- HELAS/utssxx.F 2010-10-30 03:26:37 +0000
297+++ HELAS/utssxx.F 2011-10-12 10:39:26 +0000
298@@ -20,9 +20,9 @@
299
300 implicit none
301 c-- dimension of the current set to arbitrary length
302-c INTEGER DIM
303-c PARAMETER(DIM=18)
304- include "dimension.inc"
305+ INTEGER DIM
306+ PARAMETER(DIM=18)
307+c include "dimension.inc"
308 double complex tc1(DIM),jts(DIM),sc1(DIM),sc2(DIM),g1(2)
309 double precision g2, xm, xw
310
311
312=== modified file 'HELAS/uvvaxx.F'
313--- HELAS/uvvaxx.F 2010-10-30 03:26:37 +0000
314+++ HELAS/uvvaxx.F 2011-10-12 10:39:26 +0000
315@@ -19,9 +19,9 @@
316 implicit none
317
318 c dimension of the current set to arbitrary length
319-c integer DIM
320-c parameter (DIM=18)
321- include "dimension.inc"
322+ integer DIM
323+ parameter (DIM=18)
324+c include "dimension.inc"
325 double complex w1(DIM),w2(DIM),jt(DIM)
326 double precision xm1,xm2,xw,g,s2g
327 double precision sqrTwo
328
329=== modified file 'HELAS/uvvvlx.F'
330--- HELAS/uvvvlx.F 2010-10-30 03:26:37 +0000
331+++ HELAS/uvvvlx.F 2011-10-12 10:39:26 +0000
332@@ -22,9 +22,9 @@
333 implicit none
334
335 c-- dimension of the current set to arbitrary length
336-c INTEGER DIM
337-c PARAMETER(DIM=18)
338- include "dimension.inc"
339+ INTEGER DIM
340+ PARAMETER(DIM=18)
341+c include "dimension.inc"
342 double complex ga(DIM),gb(DIM),gc(DIM),jhvvv(DIM),g2(2)
343
344 double complex dvertx, vertex, vertex1, vertex2
345
346=== modified file 'HELAS/vvshxx.F'
347--- HELAS/vvshxx.F 2010-10-30 03:26:37 +0000
348+++ HELAS/vvshxx.F 2011-10-12 10:39:26 +0000
349@@ -18,9 +18,9 @@
350 c
351 implicit none
352 c-- dimension of the current set to arbitrary length
353-c INTEGER DIM
354-c PARAMETER(DIM=18)
355- include "dimension.inc"
356+ INTEGER DIM
357+ PARAMETER(DIM=18)
358+c include "dimension.inc"
359 double complex v1(DIM),v2(DIM),sc(DIM),vertex,vertex1,vertex2
360 double complex v12,p2v1,p1v2,v13,v14,v23,v24,v34
361 double precision p12,p13,p14,p23,p24,p34
362
363=== modified file 'HELAS/vvsshx.F'
364--- HELAS/vvsshx.F 2010-10-30 03:26:37 +0000
365+++ HELAS/vvsshx.F 2011-10-12 10:39:26 +0000
366@@ -18,9 +18,9 @@
367 c
368 implicit none
369 c-- dimension of the current set to arbitrary length
370-c INTEGER DIM
371-c PARAMETER(DIM=18)
372- include "dimension.inc"
373+ INTEGER DIM
374+ PARAMETER(DIM=18)
375+c include "dimension.inc"
376 double complex v1(DIM),v2(DIM),sc1(DIM),sc2(DIM),vertex
377 double complex vertex1,vertex2,g1(2)
378 double complex v12,p2v1,p1v2,v13,v14,v23,v24,v34
379
380=== modified file 'HELAS/vvtaxx.F'
381--- HELAS/vvtaxx.F 2010-10-30 03:26:37 +0000
382+++ HELAS/vvtaxx.F 2011-10-12 10:39:26 +0000
383@@ -19,9 +19,9 @@
384 implicit none
385
386 c dimension of the current set to arbitrary length
387-c integer DIM
388-c parameter (DIM=18)
389- include "dimension.inc"
390+ integer DIM
391+ parameter (DIM=18)
392+c include "dimension.inc"
393 double complex ga(DIM),gb(DIM),tc(DIM)
394 double precision xm,xw,g
395 double precision sqrTwo
396
397=== modified file 'HELAS/vvvsxx.F'
398--- HELAS/vvvsxx.F 2010-10-30 03:26:37 +0000
399+++ HELAS/vvvsxx.F 2011-10-12 10:39:26 +0000
400@@ -21,9 +21,9 @@
401 implicit none
402
403 c-- dimension of the current set to arbitrary length
404-c INTEGER DIM
405-c PARAMETER(DIM=18)
406- include "dimension.inc"
407+ INTEGER DIM
408+ PARAMETER(DIM=18)
409+c include "dimension.inc"
410 double complex ga(DIM),gb(DIM),gc(DIM),sc(DIM)
411
412 double complex dvertx, vertex, vertex1, vertex2
413
414=== modified file 'HELAS/vvvtlx.F'
415--- HELAS/vvvtlx.F 2010-10-30 03:26:37 +0000
416+++ HELAS/vvvtlx.F 2011-10-12 10:39:26 +0000
417@@ -20,9 +20,9 @@
418 implicit none
419
420 c-- dimension of the current set to arbitrary length
421-c INTEGER DIM
422-c PARAMETER(DIM=18)
423- include "dimension.inc"
424+ INTEGER DIM
425+ PARAMETER(DIM=18)
426+c include "dimension.inc"
427 double complex ga(DIM),gb(DIM),gc(DIM),sc(DIM)
428 double complex dvertx, vertex, vertex1, vertex2
429 double complex vab, vbc, vca, v123, v124, v134, v234
430
431=== modified file 'Template/SubProcesses/cluster.f'
432--- Template/SubProcesses/cluster.f 2011-09-29 11:31:12 +0000
433+++ Template/SubProcesses/cluster.f 2011-10-12 10:39:26 +0000
434@@ -174,6 +174,7 @@
435 include 'nexternal.inc'
436 include 'maxamps.inc'
437 include 'cluster.inc'
438+ include 'message.inc'
439 integer ignum, idij, iproc, i
440
441 if(idij.gt.n_max_cl) return
442@@ -182,7 +183,8 @@
443 enddo
444 id_cl(iproc,idij,0)=id_cl(iproc,idij,0)+1
445 id_cl(iproc,idij,id_cl(iproc,idij,0))=ignum
446-c print *,'Adding graph ',ignum,' to prop ',idij
447+ if(btest(mlevel,5))
448+ $ write(*,*)'Adding graph ',ignum,' to prop ',idij,' for proc ',iproc
449 return
450 end
451
452@@ -226,6 +228,8 @@
453 integer pow(-nexternal:0,lmaxconfigs)
454 logical first_time
455 save pmass,pwidth,pow
456+ INTEGER CONFSUB(MAXSPROC,LMAXCONFIGS)
457+ INCLUDE 'config_subproc_map.inc'
458 data first_time /.true./
459
460 integer combid
461@@ -259,6 +263,7 @@
462 c Set pdg code for propagator
463 do l=1,2
464 do iproc=1,maxsproc
465+ if(confsub(iproc,ignum).eq.0) cycle
466 if(sprop(iproc,k,ignum).ne.0)then
467 ipdgcl(icmp(l),ignum,iproc)=sprop(iproc,k,ignum)
468 c If this is radiation off heavy FS particle, set heavyrad to true
469@@ -276,7 +281,6 @@
470 ipdgcl(icmp(l),ignum,iproc)=ipdgcl(2,ignum,iproc)
471 else
472 ipdgcl(icmp(l),ignum,iproc)=0
473- cycle
474 endif
475 if(btest(mlevel,4))
476 $ write(*,*) 'add table entry for (',ipids(i,1,ipnum),
477@@ -471,6 +475,7 @@
478 include 'nexternal.inc'
479 include 'maxamps.inc'
480 include 'cluster.inc'
481+ include 'message.inc'
482
483 integer idij,nbw,ibwlist(nexternal),icgs(0:n_max_cg)
484 logical foundbw
485@@ -504,6 +509,9 @@
486 if (icgs(0).gt.0)then
487 findmt=.true.
488 endif
489+ if (btest(mlevel,5))
490+ $ write (*,*)'findmt: ',findmt,' IPROC=',IPROC,' icgs(0)=',icgs(0),
491+ $ ' icgs = ',(icgs(i),i=1,icgs(0))
492 return
493 else
494 c Check for common graphs
495@@ -578,6 +586,8 @@
496 enddo
497 c Check if any resonances are on the BW, store results in to_checkbw
498 call checkbw(nbw,ibwlist,isbw)
499+ if(btest(mlevel,4).and.nbw.gt.0)
500+ $ write(*,*) 'Found BWs: ',(ibwlist(i),i=1,nbw)
501
502 c initialize index map
503 do i=1,nexternal
504
505=== modified file 'Template/bin/plot'
506--- Template/bin/plot 2011-05-24 04:27:02 +0000
507+++ Template/bin/plot 2011-10-12 10:39:26 +0000
508@@ -20,6 +20,8 @@
509
510 if [[ -x $td/td ]]; then
511 echo 'topdrawer found'
512+ # This is needed for Mac OS X
513+ export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$td
514 else
515 echo 'topdrawer not found'
516 exit
517
518=== modified file 'UpdateNotes.txt'
519--- UpdateNotes.txt 2011-10-10 07:34:37 +0000
520+++ UpdateNotes.txt 2011-10-12 10:39:26 +0000
521@@ -1,5 +1,18 @@
522 Update notes for MadGraph 5 (in reverse time order)
523
524+1.3.21 (12/10/11) OM: Add a new command: install.
525+ This allow to install quite easily different package
526+ devellop for Madgraph/MadEvent. The list of available
527+ package are pythia-pgs/MadAnalysis/ExRootAnalysis/Delphes
528+ OM: Adding TopEffth Model
529+ OM: Improve display particles and autocompletion in
530+ presence of nonpropagating particles
531+ OM: Fix Aloha bug linked to four fermion operator
532+ PA: fix the problem of degenerate color basis in the
533+ diquark sextet model
534+ JA: Fixed bug in cluster.f that created a hard stop,
535+ introduced in 1.3.18.
536+
537 1.3.20 (09/10/11) JA: Fixed bug in myamp.f that created a hard stop
538 error for certain cases with many processes with
539 different propagators in the same subprocess dir.
540
541=== modified file 'aloha/aloha_writers.py'
542--- aloha/aloha_writers.py 2011-09-30 13:55:43 +0000
543+++ aloha/aloha_writers.py 2011-10-12 10:39:26 +0000
544@@ -517,11 +517,12 @@
545 short_name, addon = name.split('C',1)
546 if addon.split('_')[0].isdigit():
547 addon = 'C' +self.namestring.split('C',1)[1]
548+ elif all([n.isdigit() for n in addon.split('_')[0].split('C')]):
549+ addon = 'C' +self.namestring.split('C',1)[1]
550 else:
551 addon = '_%s' % self.offshell
552 else:
553 addon = '_%s' % self.offshell
554-
555 # how to call the routine
556 if not offshell:
557 main = 'vertex'
558@@ -907,6 +908,8 @@
559 short_name, addon = name.split('C',1)
560 if addon.split('_')[0].isdigit():
561 addon = 'C' +self.namestring.split('C',1)[1]
562+ elif all([n.isdigit() for n in addon.split('_')[0].split('C')]):
563+ addon = 'C' +self.namestring.split('C',1)[1]
564 else:
565 addon = '_%s' % self.offshell
566 else:
567@@ -1239,6 +1242,8 @@
568 short_name, addon = name.split('C',1)
569 if addon.split('_')[0].isdigit():
570 addon = 'C' +self.namestring.split('C',1)[1]
571+ elif all([n.isdigit() for n in addon.split('_')[0].split('C')]):
572+ addon = 'C' +self.namestring.split('C',1)[1]
573 else:
574 addon = '_%s' % self.offshell
575 else:
576
577=== modified file 'madgraph/VERSION'
578--- madgraph/VERSION 2011-10-10 07:34:37 +0000
579+++ madgraph/VERSION 2011-10-12 10:39:26 +0000
580@@ -1,3 +1,2 @@
581-version = 1.3.20
582-date = 2011-10-09
583-
584+version = 1.3.21
585+date = 2011-10-12
586
587=== modified file 'madgraph/core/color_algebra.py'
588--- madgraph/core/color_algebra.py 2010-12-15 07:28:25 +0000
589+++ madgraph/core/color_algebra.py 2011-10-12 10:39:26 +0000
590@@ -757,6 +757,64 @@
591 1, int(Nc ** abs(self.Nc_power))),
592 self.is_imaginary)
593
594+ def order_summation(self, immutable=None):
595+ """Force a specific order for the summation indices
596+ in case we have Clebsch Gordan coefficients K6's or K6Bar's
597+ This is necessary to correctly recognize later on the equivalent
598+ color strings (otherwise the color basis is degenerate)
599+ The new ordering is as follow:
600+ 1. put K and KBar Clebsch Gordan coefficients at the end of the list of color factors
601+ the other factors are re-arranged in the reversed order compared with immutable
602+ 2. rename the summation indices so that they are increasing (starting from 10000)
603+ from left to right
604+ 3. finally, after the summation indices have been renamed, replace
605+ K6(a,i,j) by K6(a,j,i) and K6Bar(a,i,j) by K6Bar(a,j,i) IF j>i
606+ """
607+
608+ if not immutable:
609+ immutable = self.to_immutable()
610+
611+# STEP 1: first scan to see whether there are some K's or KBar's,
612+# and put them at the en
613+ immutable_order2=[]
614+ go_further=0
615+ for elem in immutable:
616+ if elem[0]=="K6" or elem[0]=="K6Bar" :
617+ immutable_order2.append(elem)
618+ go_further=1
619+ else: immutable_order2.insert(0,elem)
620+
621+ if go_further==0: return
622+
623+# STEP 2: rename the summation indices so that they are increasing (starting from 10000)
624+# from left to right
625+ replaced_indices = {}
626+ curr_ind = 10000
627+ return_list = []
628+
629+ for elem in immutable_order2:
630+ can_elem = [elem[0], []]
631+ for index in elem[1]:
632+ if index>9999: # consider only summation indices
633+ try:
634+ new_index = replaced_indices[index]
635+ except KeyError:
636+ new_index = curr_ind
637+ curr_ind += 1
638+ replaced_indices[index] = new_index
639+ else: new_index=index
640+ can_elem[1].append(new_index)
641+# STEP 3. replace K6(a,i,j) by K6(a,j,i) and K6Bar(a,i,j) by K6Bar(a,j,i) IF j>i
642+ if (can_elem[0]=="K6" or can_elem[0]=="K6Bar"):
643+ if can_elem[1][2]>can_elem[1][1]: can_elem[1]=[can_elem[1][0], can_elem[1][2], can_elem[1][1] ]
644+ return_list.append((can_elem[0], tuple(can_elem[1])))
645+ return_list.sort()
646+
647+ self.from_immutable(return_list)
648+ self.immutable=None # don't use the information self.immutable later on in the code,
649+ # since the summation indices have been modified
650+ return
651+
652 def to_canonical(self, immutable=None):
653 """Returns the canonical representation of the immutable representation
654 (i.e., first index is 1, ...). This allow for an easy comparison of
655
656=== modified file 'madgraph/core/color_amp.py'
657--- madgraph/core/color_amp.py 2011-05-16 19:41:08 +0000
658+++ madgraph/core/color_amp.py 2011-10-12 10:39:26 +0000
659@@ -229,6 +229,10 @@
660 col_fact = color_algebra.ColorFactor([col_str])
661 col_fact = col_fact.full_simplify()
662
663+ # Here we need to force a specific order for the summed indices
664+ # in case we have K6 or K6bar Clebsch Gordan coefficients
665+ for colstr in col_fact: colstr.order_summation()
666+
667 # Save the result for further use
668 canonical_col_fact = col_fact.create_copy()
669 canonical_col_fact.replace_indices(rep_dict)
670@@ -250,6 +254,10 @@
671 # Must simplify once to put traces in a canonical ordering
672 col_fact = col_fact.simplify()
673
674+ # Here we need to force a specific order for the summed indices
675+ # in case we have K6 or K6bar Clebsch Gordan coefficients
676+ for colstr in col_fact: colstr.order_summation()
677+
678 # loop over color strings in the resulting color factor
679 for col_str in col_fact:
680 immutable_col_str = col_str.to_immutable()
681
682=== modified file 'madgraph/interface/cmd_interface.py'
683--- madgraph/interface/cmd_interface.py 2011-08-27 02:01:27 +0000
684+++ madgraph/interface/cmd_interface.py 2011-10-12 10:39:26 +0000
685@@ -275,6 +275,13 @@
686 logger.info("")
687 logger.info(" import command PATH :")
688 logger.info(" Execute the list of command in the file at PATH")
689+
690+ def help_install(self):
691+ logger.info("syntax: install " + "|".join(self._install_opts))
692+ logger.info("-- Download the last version of the program and install it")
693+ logger.info(" localy in the current Madgraph version. In order to have")
694+ logger.info(" a sucessfull instalation, you will need to have up-to-date")
695+ logger.info(" F77 and/or C and Root compiler.")
696
697 def help_display(self):
698 logger.info("syntax: display " + "|".join(self._display_opts))
699@@ -634,6 +641,33 @@
700 raise self.InvalidCmd('PATH is mandatory in the current context\n' + \
701 'Did you forget to run the \"output\" command')
702
703+ def check_install(self, args):
704+ """check that the install command is valid"""
705+
706+ if len(args) != 1:
707+ self.help_install()
708+ raise self.InvalidCmd('install command require at least one argument')
709+
710+ if args[0] not in self._install_opts:
711+ if not args[0].startswith('td'):
712+ self.help_install()
713+ raise self.InvalidCmd('Not recognize program %s ' % args[0])
714+
715+ if args[0] in ["ExRootAnalysis", "Delphes"]:
716+ if not misc.which('root'):
717+ raise self.InvalidCmd(
718+'''In order to install ExRootAnalysis, you need to install Root on your computer first.
719+please follow information on http://root.cern.ch/drupal/content/downloading-root''')
720+ if 'ROOTSYS' not in os.environ:
721+ raise self.InvalidCmd(
722+'''The environment variable ROOTSYS is not configured.
723+You can set it by adding the following lines in your .bashrc [.bash_profile for mac]:
724+export ROOTSYS=%s
725+export PATH=$PATH:$ROOTSYS/bin
726+This will take effect only in a NEW terminal
727+''' % os.path.realpath(os.path.join(misc.which('root'), \
728+ os.path.pardir, os.path.pardir)))
729+
730
731 def check_launch(self, args, options):
732 """check the validity of the line"""
733@@ -922,6 +956,10 @@
734
735 CheckValidForCmd.check_import(self, args)
736
737+ def check_install(self, args):
738+ """ No possibility to install new software on the web """
739+ raise self.WebRestriction('Impossible to install program on the cluster')
740+
741 def check_load(self, args):
742 """ check the validity of the line
743 No Path authorize for the Web"""
744@@ -988,6 +1026,7 @@
745
746 def model_completion(self, text, process):
747 """ complete the line with model information """
748+
749 while ',' in process:
750 process = process[process.index(',')+1:]
751 args = split_arg(process)
752@@ -1421,6 +1460,14 @@
753 # return
754 return output
755
756+ def complete_install(self, text, line, begidx, endidx):
757+ "Complete the import command"
758+
759+ args = split_arg(line[0:begidx])
760+
761+ # Format
762+ if len(args) == 1:
763+ return self.list_completion(text, self._install_opts)
764 #===============================================================================
765 # MadGraphCmd
766 #===============================================================================
767@@ -1436,6 +1483,7 @@
768 _tutorial_opts = ['start', 'stop']
769 _check_opts = ['full', 'permutation', 'gauge', 'lorentz_invariance']
770 _import_formats = ['model_v4', 'model', 'proc_v4', 'command']
771+ _install_opts = ['pythia-pgs', 'Delphes', 'MadAnalysis', 'ExRootAnalysis']
772 _v4_export_formats = ['madevent', 'standalone', 'matrix']
773 _export_formats = _v4_export_formats + ['standalone_cpp', 'pythia8']
774 _set_options = ['group_subprocesses',
775@@ -1595,11 +1643,19 @@
776 self.draw(' '.join(args[1:]))
777
778 if args[0] == 'particles' and len(args) == 1:
779+ propagating_particle = []
780+ nb_unpropagating = 0
781+ for particle in self._curr_model['particles']:
782+ if particle.get('propagating'):
783+ propagating_particle.append(particle)
784+ else:
785+ nb_unpropagating += 1
786+
787 print "Current model contains %i particles:" % \
788- len(self._curr_model['particles'])
789- part_antipart = [part for part in self._curr_model['particles'] \
790+ len(propagating_particle)
791+ part_antipart = [part for part in propagating_particle \
792 if not part['self_antipart']]
793- part_self = [part for part in self._curr_model['particles'] \
794+ part_self = [part for part in propagating_particle \
795 if part['self_antipart']]
796 for part in part_antipart:
797 print part['name'] + '/' + part['antiname'],
798@@ -1607,6 +1663,9 @@
799 for part in part_self:
800 print part['name'],
801 print ''
802+ if nb_unpropagating:
803+ print 'In addition of %s un-physical particle mediating new interactions.' \
804+ % nb_unpropagating
805
806 elif args[0] == 'particles':
807 for arg in args[1:]:
808@@ -2316,6 +2375,7 @@
809
810 #convert and excecute the card
811 self.import_mg4_proc_card(proc_card)
812+
813
814 def import_ufo_model(self, model_name):
815 """ import the UFO model """
816@@ -2331,8 +2391,11 @@
817 completion, define multiparticles"""
818
819 # Set variables for autocomplete
820- self._particle_names = [p.get('name') for p in self._curr_model.get('particles')] + \
821- [p.get('antiname') for p in self._curr_model.get('particles')]
822+ self._particle_names = [p.get('name') for p in self._curr_model.get('particles')\
823+ if p.get('propagating')] + \
824+ [p.get('antiname') for p in self._curr_model.get('particles') \
825+ if p.get('propagating')]
826+
827 self._couplings = list(set(sum([i.get('orders').keys() for i in \
828 self._curr_model.get('interactions')], [])))
829 # Check if we can use case-independent particle names
830@@ -2432,6 +2495,113 @@
831 if removed_multiparticles:
832 logger.info("Removed obsolete multiparticles %s" % \
833 " / ".join(removed_multiparticles))
834+
835+ def do_install(self, line):
836+ """Install optional package from the MG suite."""
837+
838+ args = split_arg(line)
839+ #check the validity of the arguments
840+ self.check_install(args)
841+
842+ if sys.platform == "darwin":
843+ program = "curl"
844+ else:
845+ program = "wget"
846+
847+ # Load file with path of the different program:
848+ import urllib
849+ path = {}
850+ try:
851+ data = urllib.urlopen('http://madgraph.phys.ucl.ac.be/package_info.dat')
852+ except:
853+ raise MadGraph5Error, '''Impossible to connect the server.
854+ Please check your internet connection or retry later'''
855+ for line in data:
856+ split = line.split()
857+ path[split[0]] = split[1]
858+
859+ name = {'td_mac': 'td', 'td_linux':'td', 'Delphes':'Delphes',
860+ 'pythia-pgs':'pythia-pgs', 'ExRootAnalysis': 'ExRootAnalysis',
861+ 'MadAnalysis':'MadAnalysis'}
862+ name = name[args[0]]
863+
864+ try:
865+ os.system('rm -rf %s' % name)
866+ except:
867+ pass
868+
869+ # Load that path
870+ logger.info('Downloading %s' % path[args[0]])
871+ if sys.platform == "darwin":
872+ subprocess.call(['curl', path[args[0]], '-o%s.tgz' % name], cwd=MG5DIR)
873+ else:
874+ subprocess.call(['wget', path[args[0]], '--output-document=%s.tgz'% name], cwd=MG5DIR)
875+ # Untar the file
876+ returncode = subprocess.call(['tar', '-xzpvf', '%s.tgz' % name], cwd=MG5DIR)
877+ if returncode:
878+ raise MadGraph5Error, 'Fail to download correctly the File. Stop'
879+
880+ # Check that the directory has the correct name
881+ if not os.path.exists(os.path.join(MG5DIR, name)):
882+ created_name = [n for n in os.listdir(MG5DIR) if n.startswith(name)
883+ and not n.endswith('gz')]
884+ if not created_name:
885+ raise MadGraph5Error, 'The file was not loaded correctly. Stop'
886+ else:
887+ created_name = created_name[0]
888+ files.mv(os.path.join(MG5DIR, created_name), os.path.join(MG5DIR, name))
889+ logger.info('compile %s. This might takes a while.' % name)
890+
891+ # Modify Makefile for pythia-pgs on Mac 64 bit
892+ if args[0] == "pythia-pgs" and sys.maxsize > 2**32:
893+ for path in [os.path.join(MG5DIR, 'pythia-pgs', 'libraries', \
894+ 'PGS4', 'src', 'stdhep-dir', 'src', 'stdhep_Arch'),
895+ os.path.join(MG5DIR, 'pythia-pgs', 'libraries', \
896+ 'PGS4', 'src', 'stdhep-dir', 'mcfio', 'arch_mcfio')]:
897+ text = open(path).read()
898+ text = text.replace('-m32','-m64')
899+ open(path, 'w').writelines(text)
900+
901+ # Compile the file
902+ # Check for F77 compiler
903+ if 'FC' not in os.environ or not os.environ['FC']:
904+ if misc.which('g77'):
905+ os.environ['FC'] = 'g77'
906+ elif misc.which('gfortran'):
907+ os.environ['FC'] = 'gfortran'
908+ else:
909+ raise self.InvalidCmd('Require g77 or Gfortran compiler')
910+ subprocess.call(['make', 'clean'], cwd = os.path.join(MG5DIR, name))
911+ subprocess.call(['make'], cwd = os.path.join(MG5DIR, name))
912+
913+
914+ # Special treatment for TD program (require by MadAnalysis)
915+ if args[0] == 'MadAnalysis':
916+ try:
917+ os.system('rm -rf td')
918+ os.mkdir(os.path.join(MG5DIR, 'td'))
919+ except Exception, error:
920+ print error
921+ pass
922+
923+ if sys.platform == "darwin":
924+ logger.info('Downloading TD for Mac')
925+ target = 'http://theory.fnal.gov/people/parke/TD/td_mac_intel.tar.gz'
926+ subprocess.call(['curl', target, '-otd.tgz'],
927+ cwd=os.path.join(MG5DIR,'td'))
928+ subprocess.call(['tar', '-xzpvf', 'td.tgz'],
929+ cwd=os.path.join(MG5DIR,'td'))
930+ files.mv(MG5DIR + '/td/td_mac_intel',MG5DIR+'/td/td')
931+ else:
932+ logger.info('Downloading TD for Linux 32 bit')
933+ target = 'http://cp3wks05.fynu.ucl.ac.be/twiki/pub/Software/TopDrawer/td'
934+ subprocess.call(['wget', target], cwd=os.path.join(MG5DIR,'td'))
935+
936+ if sys.maxsize > 2**32:
937+ logger.warning('''td program (needed by MadAnalysis) is not compile for 64 bit computer
938+ Please follow instruction in http://cp3wks05.fynu.ucl.ac.be/twiki/bin/view/Software/TopDrawer.''')
939+
940+
941
942 def set_configuration(self, config_path=None):
943 """ assign all configuration variable from file
944
945=== modified file 'madgraph/iolibs/export_v4.py'
946--- madgraph/iolibs/export_v4.py 2011-10-04 04:15:47 +0000
947+++ madgraph/iolibs/export_v4.py 2011-10-12 10:39:26 +0000
948@@ -1001,6 +1001,10 @@
949 writers.FortranWriter(filename),
950 matrix_element)
951
952+ filename = 'config_subproc_map.inc'
953+ self.write_config_subproc_map_file(writers.FortranWriter(filename),
954+ s_and_t_channels)
955+
956 filename = 'coloramps.inc'
957 self.write_coloramps_file(writers.FortranWriter(filename),
958 mapconfigs,
959@@ -1640,6 +1644,23 @@
960 return s_and_t_channels
961
962 #===========================================================================
963+ # write_config_subproc_map_file
964+ #===========================================================================
965+ def write_config_subproc_map_file(self, writer, s_and_t_channels):
966+ """Write a dummy config_subproc.inc file for MadEvent"""
967+
968+ lines = []
969+
970+ for iconfig in range(len(s_and_t_channels)):
971+ lines.append("DATA CONFSUB(1,%d)/1/" % \
972+ (iconfig + 1))
973+
974+ # Write the file
975+ writer.writelines(lines)
976+
977+ return True
978+
979+ #===========================================================================
980 # write_decayBW_file
981 #===========================================================================
982 def write_decayBW_file(self, writer, s_and_t_channels):
983
984=== added directory 'models/TopEffTh'
985=== added file 'models/TopEffTh/TopEffTh.log'
986--- models/TopEffTh/TopEffTh.log 1970-01-01 00:00:00 +0000
987+++ models/TopEffTh/TopEffTh.log 2011-10-12 10:39:26 +0000
988@@ -0,0 +1,79 @@
989+# This file was automatically created by FeynRules $Revision: 821 $
990+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
991+# Date: Mon 3 Oct 2011 11:59:51
992+
993+
994+#
995+# This is the logfile for the model TopEffTh
996+
997+# Authors: C. Degrande
998+# Model version: 1.1
999+# Checking the Lagrangians
1000+ * All Lagrangians are ok.
1001+#
1002+# Particle definitions
1003+#
1004+
1005+ * No particles removed. All particles correspond to GenInt setup.
1006+
1007+# Automatically assigned PDG numbers
1008+ * Assigned PDG number 9000001 to particle ghA
1009+ * Assigned PDG number 9000002 to particle ghZ
1010+ * Assigned PDG number 9000003 to particle ghWp
1011+ * Assigned PDG number 9000004 to particle ghWm
1012+ * Assigned PDG number 9000005 to particle ghG
1013+ * Assigned PDG number 9000006 to particle Tri0
1014+ * Assigned PDG number 9000007 to particle Tri
1015+ * Assigned PDG number 9000008 to particle Tri80
1016+ * Assigned PDG number 9000009 to particle Tri8
1017+ * Assigned PDG number 9000010 to particle V8t
1018+ * Assigned PDG number 9000011 to particle V8Q
1019+
1020+
1021+# Compulsory PDG codes:
1022+ * Class SM leptons complete.
1023+ * Class SM neutrinos complete.
1024+ * Class SM quarks complete.
1025+ * Class SM gauge bosons complete.
1026+#
1027+# Parameter definitions
1028+#
1029+
1030+ * All parameters are ok.
1031+
1032+
1033+# Vertices
1034+ * Calling FeynmanRules for 1 Lagrangians.
1035+ * Number of classes vertices: 106
1036+ * Number of flavored vertices: 142
1037+ * Saved vertices in InterfaceRun[ 1 ].
1038+ * Checked QNumber conservation.
1039+ - Quantum number GhostNumber conserved in all vertices.
1040+ - Quantum number LeptonNumber conserved in all vertices.
1041+ - Quantum number Q conserved in all vertices.
1042+ * particles.py written.
1043+ * parameters.py written.
1044+#
1045+# Vertex definitions
1046+#
1047+
1048+ * 142 vertices written.
1049+ * vertices.py written.
1050+#
1051+# Lorentz structure definitions
1052+#
1053+
1054+ * 89 lorentz structures written.
1055+ * lorentz.py written.
1056+#
1057+# Coupling definitions
1058+#
1059+
1060+ * 131 couplings written.
1061+ * couplings.py written.
1062+#
1063+# Coupling order definitions
1064+#
1065+
1066+ * 0 couplings orders written.
1067+ * coupling_orders.py written.
1068
1069=== added file 'models/TopEffTh/__init__.py'
1070--- models/TopEffTh/__init__.py 1970-01-01 00:00:00 +0000
1071+++ models/TopEffTh/__init__.py 2011-10-12 10:39:26 +0000
1072@@ -0,0 +1,22 @@
1073+
1074+import particles
1075+import couplings
1076+import lorentz
1077+import parameters
1078+import vertices
1079+import coupling_orders
1080+import write_param_card
1081+
1082+
1083+all_particles = particles.all_particles
1084+all_vertices = vertices.all_vertices
1085+all_couplings = couplings.all_couplings
1086+all_lorentz = lorentz.all_lorentz
1087+all_parameters = parameters.all_parameters
1088+all_orders = coupling_orders.all_orders
1089+all_functions = function_library.all_functions
1090+
1091+
1092+__author__ = "C. Degrande"
1093+__version__ = "1.1"
1094+__email__ = "celine.degrande@uclouvain.be"
1095
1096=== added file 'models/TopEffTh/coupling_orders.py'
1097--- models/TopEffTh/coupling_orders.py 1970-01-01 00:00:00 +0000
1098+++ models/TopEffTh/coupling_orders.py 2011-10-12 10:39:26 +0000
1099@@ -0,0 +1,20 @@
1100+# This file was automatically created by FeynRules $Revision: 821 $
1101+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
1102+# Date: Mon 3 Oct 2011 13:27:07
1103+
1104+
1105+from object_library import all_orders, CouplingOrder
1106+
1107+
1108+NP = CouplingOrder(name = 'NP',
1109+ expansion_order = 2,
1110+ hierarchy = 1)
1111+
1112+QCD = CouplingOrder(name = 'QCD',
1113+ expansion_order = 99,
1114+ hierarchy = 2)
1115+
1116+QED = CouplingOrder(name = 'QED',
1117+ expansion_order = 99,
1118+ hierarchy = 4)
1119+
1120
1121=== added file 'models/TopEffTh/couplings.py'
1122--- models/TopEffTh/couplings.py 1970-01-01 00:00:00 +0000
1123+++ models/TopEffTh/couplings.py 2011-10-12 10:39:26 +0000
1124@@ -0,0 +1,535 @@
1125+# This file was automatically created by FeynRules $Revision: 821 $
1126+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
1127+# Date: Mon 3 Oct 2011 13:27:06
1128+
1129+
1130+from object_library import all_couplings, Coupling
1131+
1132+from function_library import complexconjugate, re, im, csc, sec, acsc, asec
1133+
1134+
1135+
1136+GC_1 = Coupling(name = 'GC_1',
1137+ value = '-(ee*complex(0,1))/3.',
1138+ order = {'QED':1})
1139+
1140+GC_2 = Coupling(name = 'GC_2',
1141+ value = '(2*ee*complex(0,1))/3.',
1142+ order = {'QED':1})
1143+
1144+GC_3 = Coupling(name = 'GC_3',
1145+ value = '-(ee*complex(0,1))',
1146+ order = {'QED':1})
1147+
1148+GC_4 = Coupling(name = 'GC_4',
1149+ value = '-G',
1150+ order = {'QCD':1})
1151+
1152+GC_5 = Coupling(name = 'GC_5',
1153+ value = 'complex(0,1)*G',
1154+ order = {'QCD':1})
1155+
1156+GC_6 = Coupling(name = 'GC_6',
1157+ value = 'complex(0,1)*G**2',
1158+ order = {'QCD':2})
1159+
1160+GC_7 = Coupling(name = 'GC_7',
1161+ value = 'complex(0,1)*g8Q',
1162+ order = {'NP':1})
1163+
1164+GC_8 = Coupling(name = 'GC_8',
1165+ value = 'complex(0,1)*g8Qd',
1166+ order = {'NP':1})
1167+
1168+GC_9 = Coupling(name = 'GC_9',
1169+ value = 'complex(0,1)*g8Qq',
1170+ order = {'NP':1})
1171+
1172+GC_10 = Coupling(name = 'GC_10',
1173+ value = 'complex(0,1)*g8Qu',
1174+ order = {'NP':1})
1175+
1176+GC_11 = Coupling(name = 'GC_11',
1177+ value = 'complex(0,1)*g8t',
1178+ order = {'NP':1})
1179+
1180+GC_12 = Coupling(name = 'GC_12',
1181+ value = 'complex(0,1)*g8td',
1182+ order = {'NP':1})
1183+
1184+GC_13 = Coupling(name = 'GC_13',
1185+ value = 'complex(0,1)*g8tq',
1186+ order = {'NP':1})
1187+
1188+GC_14 = Coupling(name = 'GC_14',
1189+ value = 'complex(0,1)*g8tu',
1190+ order = {'NP':1})
1191+
1192+GC_15 = Coupling(name = 'GC_15',
1193+ value = '-(complex(0,1)*gT)',
1194+ order = {'NP':1})
1195+
1196+GC_16 = Coupling(name = 'GC_16',
1197+ value = 'complex(0,1)*gT',
1198+ order = {'NP':1})
1199+
1200+GC_17 = Coupling(name = 'GC_17',
1201+ value = 'complex(0,1)*gT*cmath.sqrt(2)',
1202+ order = {'NP':1})
1203+
1204+GC_18 = Coupling(name = 'GC_18',
1205+ value = '-(complex(0,1)*gT8)',
1206+ order = {'NP':1})
1207+
1208+GC_19 = Coupling(name = 'GC_19',
1209+ value = 'complex(0,1)*gT8',
1210+ order = {'NP':1})
1211+
1212+GC_20 = Coupling(name = 'GC_20',
1213+ value = 'complex(0,1)*gT8*cmath.sqrt(2)',
1214+ order = {'NP':1})
1215+
1216+GC_21 = Coupling(name = 'GC_21',
1217+ value = '-(complex(0,1)*gT8l)',
1218+ order = {'NP':1})
1219+
1220+GC_22 = Coupling(name = 'GC_22',
1221+ value = 'complex(0,1)*gT8l',
1222+ order = {'NP':1})
1223+
1224+GC_23 = Coupling(name = 'GC_23',
1225+ value = 'complex(0,1)*gT8l*cmath.sqrt(2)',
1226+ order = {'NP':1})
1227+
1228+GC_24 = Coupling(name = 'GC_24',
1229+ value = '-(complex(0,1)*gTl)',
1230+ order = {'NP':1})
1231+
1232+GC_25 = Coupling(name = 'GC_25',
1233+ value = 'complex(0,1)*gTl',
1234+ order = {'NP':1})
1235+
1236+GC_26 = Coupling(name = 'GC_26',
1237+ value = 'complex(0,1)*gTl*cmath.sqrt(2)',
1238+ order = {'NP':1})
1239+
1240+GC_27 = Coupling(name = 'GC_27',
1241+ value = 'cw*complex(0,1)*gw',
1242+ order = {'QED':1})
1243+
1244+GC_28 = Coupling(name = 'GC_28',
1245+ value = '-(complex(0,1)*gw**2)',
1246+ order = {'QED':2})
1247+
1248+GC_29 = Coupling(name = 'GC_29',
1249+ value = 'cw**2*complex(0,1)*gw**2',
1250+ order = {'QED':2})
1251+
1252+GC_30 = Coupling(name = 'GC_30',
1253+ value = '-6*complex(0,1)*lam',
1254+ order = {'QED':2})
1255+
1256+GC_31 = Coupling(name = 'GC_31',
1257+ value = '(-6*CG)/Lambda**2',
1258+ order = {'NP':2})
1259+
1260+GC_32 = Coupling(name = 'GC_32',
1261+ value = '(2*CphiG*complex(0,1))/Lambda**2',
1262+ order = {'NP':2,'QED':1})
1263+
1264+GC_33 = Coupling(name = 'GC_33',
1265+ value = '(-2*CtG*complex(0,1)*cmath.sqrt(2))/Lambda**2',
1266+ order = {'NP':2,'QED':1})
1267+
1268+GC_34 = Coupling(name = 'GC_34',
1269+ value = '(-2*CtW*complex(0,1))/Lambda**2',
1270+ order = {'NP':2,'QED':1})
1271+
1272+GC_35 = Coupling(name = 'GC_35',
1273+ value = '-((CtW*cw*complex(0,1)*cmath.sqrt(2))/Lambda**2)',
1274+ order = {'NP':2,'QED':1})
1275+
1276+GC_36 = Coupling(name = 'GC_36',
1277+ value = '(6*CG*complex(0,1)*G)/Lambda**2',
1278+ order = {'NP':2,'QCD':1})
1279+
1280+GC_37 = Coupling(name = 'GC_37',
1281+ value = '(2*CphiG*G)/Lambda**2',
1282+ order = {'NP':2,'QCD':1,'QED':1})
1283+
1284+GC_38 = Coupling(name = 'GC_38',
1285+ value = '(-2*CtG*G*cmath.sqrt(2))/Lambda**2',
1286+ order = {'NP':2,'QCD':1,'QED':1})
1287+
1288+GC_39 = Coupling(name = 'GC_39',
1289+ value = '(-3*CG*G**2)/Lambda**2',
1290+ order = {'NP':2,'QCD':2})
1291+
1292+GC_40 = Coupling(name = 'GC_40',
1293+ value = '(3*CG*G**2)/Lambda**2',
1294+ order = {'NP':2,'QCD':2})
1295+
1296+GC_41 = Coupling(name = 'GC_41',
1297+ value = '(-2*CphiG*complex(0,1)*G**2)/Lambda**2',
1298+ order = {'NP':2,'QCD':2,'QED':1})
1299+
1300+GC_42 = Coupling(name = 'GC_42',
1301+ value = '-((CG*complex(0,1)*G**3)/Lambda**2)',
1302+ order = {'NP':2,'QCD':3})
1303+
1304+GC_43 = Coupling(name = 'GC_43',
1305+ value = '(CG*complex(0,1)*G**3)/Lambda**2',
1306+ order = {'NP':2,'QCD':3})
1307+
1308+GC_44 = Coupling(name = 'GC_44',
1309+ value = '(CtW*complex(0,1)*gw*cmath.sqrt(2))/Lambda**2',
1310+ order = {'NP':2,'QED':2})
1311+
1312+GC_45 = Coupling(name = 'GC_45',
1313+ value = '(2*CtW*cw*complex(0,1)*gw)/Lambda**2',
1314+ order = {'NP':2,'QED':2})
1315+
1316+GC_46 = Coupling(name = 'GC_46',
1317+ value = '(ee**2*complex(0,1))/(2.*sw**2)',
1318+ order = {'QED':2})
1319+
1320+GC_47 = Coupling(name = 'GC_47',
1321+ value = '(ee*complex(0,1))/(sw*cmath.sqrt(2))',
1322+ order = {'QED':1})
1323+
1324+GC_48 = Coupling(name = 'GC_48',
1325+ value = '(CKM11*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1326+ order = {'QED':1})
1327+
1328+GC_49 = Coupling(name = 'GC_49',
1329+ value = '(CKM12*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1330+ order = {'QED':1})
1331+
1332+GC_50 = Coupling(name = 'GC_50',
1333+ value = '(CKM13*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1334+ order = {'QED':1})
1335+
1336+GC_51 = Coupling(name = 'GC_51',
1337+ value = '(CKM21*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1338+ order = {'QED':1})
1339+
1340+GC_52 = Coupling(name = 'GC_52',
1341+ value = '(CKM22*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1342+ order = {'QED':1})
1343+
1344+GC_53 = Coupling(name = 'GC_53',
1345+ value = '(CKM23*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1346+ order = {'QED':1})
1347+
1348+GC_54 = Coupling(name = 'GC_54',
1349+ value = '(CKM31*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1350+ order = {'QED':1})
1351+
1352+GC_55 = Coupling(name = 'GC_55',
1353+ value = '(CKM32*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1354+ order = {'QED':1})
1355+
1356+GC_56 = Coupling(name = 'GC_56',
1357+ value = '(CKM33*ee*complex(0,1))/(sw*cmath.sqrt(2))',
1358+ order = {'QED':1})
1359+
1360+GC_57 = Coupling(name = 'GC_57',
1361+ value = '-(cw*ee*complex(0,1))/(2.*sw)',
1362+ order = {'QED':1})
1363+
1364+GC_58 = Coupling(name = 'GC_58',
1365+ value = '(cw*ee*complex(0,1))/(2.*sw)',
1366+ order = {'QED':1})
1367+
1368+GC_59 = Coupling(name = 'GC_59',
1369+ value = '(C3phiq*ee*complex(0,1)*cmath.sqrt(2))/(Lambda**2*sw)',
1370+ order = {'NP':2,'QED':2})
1371+
1372+GC_60 = Coupling(name = 'GC_60',
1373+ value = '-(ee*complex(0,1)*sw)/(6.*cw)',
1374+ order = {'QED':1})
1375+
1376+GC_61 = Coupling(name = 'GC_61',
1377+ value = '(ee*complex(0,1)*sw)/(2.*cw)',
1378+ order = {'QED':1})
1379+
1380+GC_62 = Coupling(name = 'GC_62',
1381+ value = 'complex(0,1)*gw*sw',
1382+ order = {'QED':1})
1383+
1384+GC_63 = Coupling(name = 'GC_63',
1385+ value = '-2*cw*complex(0,1)*gw**2*sw',
1386+ order = {'QED':2})
1387+
1388+GC_64 = Coupling(name = 'GC_64',
1389+ value = '-((CtW*complex(0,1)*sw*cmath.sqrt(2))/Lambda**2)',
1390+ order = {'NP':2,'QED':1})
1391+
1392+GC_65 = Coupling(name = 'GC_65',
1393+ value = '(-2*CtW*complex(0,1)*gw*sw)/Lambda**2',
1394+ order = {'NP':2,'QED':2})
1395+
1396+GC_66 = Coupling(name = 'GC_66',
1397+ value = 'complex(0,1)*gw**2*sw**2',
1398+ order = {'QED':2})
1399+
1400+GC_67 = Coupling(name = 'GC_67',
1401+ value = '(cw*ee*complex(0,1))/(2.*sw) + (ee*complex(0,1)*sw)/(2.*cw)',
1402+ order = {'QED':1})
1403+
1404+GC_68 = Coupling(name = 'GC_68',
1405+ 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)',
1406+ order = {'QED':2})
1407+
1408+GC_69 = Coupling(name = 'GC_69',
1409+ value = '-6*complex(0,1)*lam*v',
1410+ order = {'QED':1})
1411+
1412+GC_70 = Coupling(name = 'GC_70',
1413+ value = '(2*CphiG*complex(0,1)*v)/Lambda**2',
1414+ order = {'NP':2})
1415+
1416+GC_71 = Coupling(name = 'GC_71',
1417+ value = '(-2*CtG*complex(0,1)*v*cmath.sqrt(2))/Lambda**2',
1418+ order = {'NP':2})
1419+
1420+GC_72 = Coupling(name = 'GC_72',
1421+ value = '(-2*CtW*complex(0,1)*v)/Lambda**2',
1422+ order = {'NP':2})
1423+
1424+GC_73 = Coupling(name = 'GC_73',
1425+ value = '-((CtW*cw*complex(0,1)*v*cmath.sqrt(2))/Lambda**2)',
1426+ order = {'NP':2})
1427+
1428+GC_74 = Coupling(name = 'GC_74',
1429+ value = '(2*CphiG*G*v)/Lambda**2',
1430+ order = {'NP':2,'QCD':1})
1431+
1432+GC_75 = Coupling(name = 'GC_75',
1433+ value = '(-2*CtG*G*v*cmath.sqrt(2))/Lambda**2',
1434+ order = {'NP':2,'QCD':1})
1435+
1436+GC_76 = Coupling(name = 'GC_76',
1437+ value = '(-2*CphiG*complex(0,1)*G**2*v)/Lambda**2',
1438+ order = {'NP':2,'QCD':2})
1439+
1440+GC_77 = Coupling(name = 'GC_77',
1441+ value = '(CtW*complex(0,1)*gw*v*cmath.sqrt(2))/Lambda**2',
1442+ order = {'NP':2,'QED':1})
1443+
1444+GC_78 = Coupling(name = 'GC_78',
1445+ value = '(2*CtW*cw*complex(0,1)*gw*v)/Lambda**2',
1446+ order = {'NP':2,'QED':1})
1447+
1448+GC_79 = Coupling(name = 'GC_79',
1449+ value = '(ee**2*complex(0,1)*v)/(2.*sw**2)',
1450+ order = {'QED':1})
1451+
1452+GC_80 = Coupling(name = 'GC_80',
1453+ value = '(C3phiq*ee*complex(0,1)*v*cmath.sqrt(2))/(Lambda**2*sw)',
1454+ order = {'NP':2,'QED':1})
1455+
1456+GC_81 = Coupling(name = 'GC_81',
1457+ value = '-((CtW*complex(0,1)*sw*v*cmath.sqrt(2))/Lambda**2)',
1458+ order = {'NP':2})
1459+
1460+GC_82 = Coupling(name = 'GC_82',
1461+ value = '(-2*CtW*complex(0,1)*gw*sw*v)/Lambda**2',
1462+ order = {'NP':2,'QED':1})
1463+
1464+GC_83 = Coupling(name = 'GC_83',
1465+ value = '(C3phiq*ee*complex(0,1)*v**2)/(Lambda**2*sw*cmath.sqrt(2))',
1466+ order = {'NP':2})
1467+
1468+GC_84 = Coupling(name = 'GC_84',
1469+ value = 'ee**2*complex(0,1)*v + (cw**2*ee**2*complex(0,1)*v)/(2.*sw**2) + (ee**2*complex(0,1)*sw**2*v)/(2.*cw**2)',
1470+ order = {'QED':1})
1471+
1472+GC_85 = Coupling(name = 'GC_85',
1473+ value = '-((complex(0,1)*yb)/cmath.sqrt(2))',
1474+ order = {'QED':1})
1475+
1476+GC_86 = Coupling(name = 'GC_86',
1477+ value = '-((complex(0,1)*yc)/cmath.sqrt(2))',
1478+ order = {'QED':1})
1479+
1480+GC_87 = Coupling(name = 'GC_87',
1481+ value = '-((complex(0,1)*ydo)/cmath.sqrt(2))',
1482+ order = {'QED':1})
1483+
1484+GC_88 = Coupling(name = 'GC_88',
1485+ value = '-((complex(0,1)*ye)/cmath.sqrt(2))',
1486+ order = {'QED':1})
1487+
1488+GC_89 = Coupling(name = 'GC_89',
1489+ value = '-((complex(0,1)*ym)/cmath.sqrt(2))',
1490+ order = {'QED':1})
1491+
1492+GC_90 = Coupling(name = 'GC_90',
1493+ value = '-((complex(0,1)*ys)/cmath.sqrt(2))',
1494+ order = {'QED':1})
1495+
1496+GC_91 = Coupling(name = 'GC_91',
1497+ value = '-((complex(0,1)*yt)/cmath.sqrt(2))',
1498+ order = {'QED':1})
1499+
1500+GC_92 = Coupling(name = 'GC_92',
1501+ value = '-((complex(0,1)*ytau)/cmath.sqrt(2))',
1502+ order = {'QED':1})
1503+
1504+GC_93 = Coupling(name = 'GC_93',
1505+ value = '-((complex(0,1)*yup)/cmath.sqrt(2))',
1506+ order = {'QED':1})
1507+
1508+GC_94 = Coupling(name = 'GC_94',
1509+ value = '(ee*complex(0,1)*complexconjugate(C3phiq)*cmath.sqrt(2))/(Lambda**2*sw)',
1510+ order = {'NP':2,'QED':2})
1511+
1512+GC_95 = Coupling(name = 'GC_95',
1513+ value = '(ee*complex(0,1)*v*complexconjugate(C3phiq)*cmath.sqrt(2))/(Lambda**2*sw)',
1514+ order = {'NP':2,'QED':1})
1515+
1516+GC_96 = Coupling(name = 'GC_96',
1517+ value = '(ee*complex(0,1)*v**2*complexconjugate(C3phiq))/(Lambda**2*sw*cmath.sqrt(2))',
1518+ order = {'NP':2})
1519+
1520+GC_97 = Coupling(name = 'GC_97',
1521+ value = '(C3phiq*complex(0,1))/(2.*Lambda**2) - (complex(0,1)*complexconjugate(C3phiq))/(2.*Lambda**2)',
1522+ order = {'NP':2,'QED':1})
1523+
1524+GC_98 = Coupling(name = 'GC_98',
1525+ value = '-(C3phiq*complex(0,1))/(2.*Lambda**2) + (complex(0,1)*complexconjugate(C3phiq))/(2.*Lambda**2)',
1526+ order = {'NP':2,'QED':1})
1527+
1528+GC_99 = Coupling(name = 'GC_99',
1529+ value = '-(C3phiq*cw*ee*complex(0,1))/(2.*Lambda**2*sw) - (C3phiq*ee*complex(0,1)*sw)/(2.*cw*Lambda**2) - (cw*ee*complex(0,1)*complexconjugate(C3phiq))/(2.*Lambda**2*sw) - (ee*complex(0,1)*sw*complexconjugate(C3phiq))/(2.*cw*Lambda**2)',
1530+ order = {'NP':2,'QED':2})
1531+
1532+GC_100 = Coupling(name = 'GC_100',
1533+ value = '(C3phiq*cw*ee*complex(0,1))/(2.*Lambda**2*sw) + (C3phiq*ee*complex(0,1)*sw)/(2.*cw*Lambda**2) + (cw*ee*complex(0,1)*complexconjugate(C3phiq))/(2.*Lambda**2*sw) + (ee*complex(0,1)*sw*complexconjugate(C3phiq))/(2.*cw*Lambda**2)',
1534+ order = {'NP':2,'QED':2})
1535+
1536+GC_101 = Coupling(name = 'GC_101',
1537+ value = '(C3phiq*complex(0,1)*v)/(2.*Lambda**2) - (complex(0,1)*v*complexconjugate(C3phiq))/(2.*Lambda**2)',
1538+ order = {'NP':2})
1539+
1540+GC_102 = Coupling(name = 'GC_102',
1541+ value = '-(C3phiq*complex(0,1)*v)/(2.*Lambda**2) + (complex(0,1)*v*complexconjugate(C3phiq))/(2.*Lambda**2)',
1542+ order = {'NP':2})
1543+
1544+GC_103 = Coupling(name = 'GC_103',
1545+ value = '-(C3phiq*cw*ee*complex(0,1)*v)/(2.*Lambda**2*sw) - (C3phiq*ee*complex(0,1)*sw*v)/(2.*cw*Lambda**2) - (cw*ee*complex(0,1)*v*complexconjugate(C3phiq))/(2.*Lambda**2*sw) - (ee*complex(0,1)*sw*v*complexconjugate(C3phiq))/(2.*cw*Lambda**2)',
1546+ order = {'NP':2,'QED':1})
1547+
1548+GC_104 = Coupling(name = 'GC_104',
1549+ value = '(C3phiq*cw*ee*complex(0,1)*v)/(2.*Lambda**2*sw) + (C3phiq*ee*complex(0,1)*sw*v)/(2.*cw*Lambda**2) + (cw*ee*complex(0,1)*v*complexconjugate(C3phiq))/(2.*Lambda**2*sw) + (ee*complex(0,1)*sw*v*complexconjugate(C3phiq))/(2.*cw*Lambda**2)',
1550+ order = {'NP':2,'QED':1})
1551+
1552+GC_105 = Coupling(name = 'GC_105',
1553+ value = '-(C3phiq*cw*ee*complex(0,1)*v**2)/(4.*Lambda**2*sw) - (C3phiq*ee*complex(0,1)*sw*v**2)/(4.*cw*Lambda**2) - (cw*ee*complex(0,1)*v**2*complexconjugate(C3phiq))/(4.*Lambda**2*sw) - (ee*complex(0,1)*sw*v**2*complexconjugate(C3phiq))/(4.*cw*Lambda**2)',
1554+ order = {'NP':2})
1555+
1556+GC_106 = Coupling(name = 'GC_106',
1557+ value = '(C3phiq*cw*ee*complex(0,1)*v**2)/(4.*Lambda**2*sw) + (C3phiq*ee*complex(0,1)*sw*v**2)/(4.*cw*Lambda**2) + (cw*ee*complex(0,1)*v**2*complexconjugate(C3phiq))/(4.*Lambda**2*sw) + (ee*complex(0,1)*sw*v**2*complexconjugate(C3phiq))/(4.*cw*Lambda**2)',
1558+ order = {'NP':2})
1559+
1560+GC_107 = Coupling(name = 'GC_107',
1561+ value = '(ee*complex(0,1)*complexconjugate(CKM11))/(sw*cmath.sqrt(2))',
1562+ order = {'QED':1})
1563+
1564+GC_108 = Coupling(name = 'GC_108',
1565+ value = '(ee*complex(0,1)*complexconjugate(CKM12))/(sw*cmath.sqrt(2))',
1566+ order = {'QED':1})
1567+
1568+GC_109 = Coupling(name = 'GC_109',
1569+ value = '(ee*complex(0,1)*complexconjugate(CKM13))/(sw*cmath.sqrt(2))',
1570+ order = {'QED':1})
1571+
1572+GC_110 = Coupling(name = 'GC_110',
1573+ value = '(ee*complex(0,1)*complexconjugate(CKM21))/(sw*cmath.sqrt(2))',
1574+ order = {'QED':1})
1575+
1576+GC_111 = Coupling(name = 'GC_111',
1577+ value = '(ee*complex(0,1)*complexconjugate(CKM22))/(sw*cmath.sqrt(2))',
1578+ order = {'QED':1})
1579+
1580+GC_112 = Coupling(name = 'GC_112',
1581+ value = '(ee*complex(0,1)*complexconjugate(CKM23))/(sw*cmath.sqrt(2))',
1582+ order = {'QED':1})
1583+
1584+GC_113 = Coupling(name = 'GC_113',
1585+ value = '(ee*complex(0,1)*complexconjugate(CKM31))/(sw*cmath.sqrt(2))',
1586+ order = {'QED':1})
1587+
1588+GC_114 = Coupling(name = 'GC_114',
1589+ value = '(ee*complex(0,1)*complexconjugate(CKM32))/(sw*cmath.sqrt(2))',
1590+ order = {'QED':1})
1591+
1592+GC_115 = Coupling(name = 'GC_115',
1593+ value = '(ee*complex(0,1)*complexconjugate(CKM33))/(sw*cmath.sqrt(2))',
1594+ order = {'QED':1})
1595+
1596+GC_116 = Coupling(name = 'GC_116',
1597+ value = '(-2*complex(0,1)*complexconjugate(CtG)*cmath.sqrt(2))/Lambda**2',
1598+ order = {'NP':2,'QED':1})
1599+
1600+GC_117 = Coupling(name = 'GC_117',
1601+ value = '(-2*G*complexconjugate(CtG)*cmath.sqrt(2))/Lambda**2',
1602+ order = {'NP':2,'QCD':1,'QED':1})
1603+
1604+GC_118 = Coupling(name = 'GC_118',
1605+ value = '(-2*complex(0,1)*v*complexconjugate(CtG)*cmath.sqrt(2))/Lambda**2',
1606+ order = {'NP':2})
1607+
1608+GC_119 = Coupling(name = 'GC_119',
1609+ value = '(-2*G*v*complexconjugate(CtG)*cmath.sqrt(2))/Lambda**2',
1610+ order = {'NP':2,'QCD':1})
1611+
1612+GC_120 = Coupling(name = 'GC_120',
1613+ value = '(-2*complex(0,1)*complexconjugate(CtW))/Lambda**2',
1614+ order = {'NP':2,'QED':1})
1615+
1616+GC_121 = Coupling(name = 'GC_121',
1617+ value = '-((cw*complex(0,1)*complexconjugate(CtW)*cmath.sqrt(2))/Lambda**2)',
1618+ order = {'NP':2,'QED':1})
1619+
1620+GC_122 = Coupling(name = 'GC_122',
1621+ value = '(complex(0,1)*gw*complexconjugate(CtW)*cmath.sqrt(2))/Lambda**2',
1622+ order = {'NP':2,'QED':2})
1623+
1624+GC_123 = Coupling(name = 'GC_123',
1625+ value = '(-2*cw*complex(0,1)*gw*complexconjugate(CtW))/Lambda**2',
1626+ order = {'NP':2,'QED':2})
1627+
1628+GC_124 = Coupling(name = 'GC_124',
1629+ value = '-((complex(0,1)*sw*complexconjugate(CtW)*cmath.sqrt(2))/Lambda**2)',
1630+ order = {'NP':2,'QED':1})
1631+
1632+GC_125 = Coupling(name = 'GC_125',
1633+ value = '(2*complex(0,1)*gw*sw*complexconjugate(CtW))/Lambda**2',
1634+ order = {'NP':2,'QED':2})
1635+
1636+GC_126 = Coupling(name = 'GC_126',
1637+ value = '(-2*complex(0,1)*v*complexconjugate(CtW))/Lambda**2',
1638+ order = {'NP':2})
1639+
1640+GC_127 = Coupling(name = 'GC_127',
1641+ value = '-((cw*complex(0,1)*v*complexconjugate(CtW)*cmath.sqrt(2))/Lambda**2)',
1642+ order = {'NP':2})
1643+
1644+GC_128 = Coupling(name = 'GC_128',
1645+ value = '(complex(0,1)*gw*v*complexconjugate(CtW)*cmath.sqrt(2))/Lambda**2',
1646+ order = {'NP':2,'QED':1})
1647+
1648+GC_129 = Coupling(name = 'GC_129',
1649+ value = '(-2*cw*complex(0,1)*gw*v*complexconjugate(CtW))/Lambda**2',
1650+ order = {'NP':2,'QED':1})
1651+
1652+GC_130 = Coupling(name = 'GC_130',
1653+ value = '-((complex(0,1)*sw*v*complexconjugate(CtW)*cmath.sqrt(2))/Lambda**2)',
1654+ order = {'NP':2})
1655+
1656+GC_131 = Coupling(name = 'GC_131',
1657+ value = '(2*complex(0,1)*gw*sw*v*complexconjugate(CtW))/Lambda**2',
1658+ order = {'NP':2,'QED':1})
1659+
1660
1661=== added file 'models/TopEffTh/function_library.py'
1662--- models/TopEffTh/function_library.py 1970-01-01 00:00:00 +0000
1663+++ models/TopEffTh/function_library.py 2011-10-12 10:39:26 +0000
1664@@ -0,0 +1,54 @@
1665+# This file is part of the UFO.
1666+#
1667+# This file contains definitions for functions that
1668+# are extensions of the cmath library, and correspond
1669+# either to functions that are in cmath, but inconvenient
1670+# to access from there (e.g. z.conjugate()),
1671+# or functions that are simply not defined.
1672+#
1673+#
1674+
1675+__date__ = "22 July 2010"
1676+__author__ = "claude.duhr@durham.ac.uk"
1677+
1678+import cmath
1679+from object_library import all_functions, Function
1680+
1681+#
1682+# shortcuts for functions from cmath
1683+#
1684+
1685+complexconjugate = Function(name = 'complexconjugate',
1686+ arguments = ('z',),
1687+ expression = 'z.conjugate()')
1688+
1689+
1690+re = Function(name = 're',
1691+ arguments = ('z',),
1692+ expression = 'z.real')
1693+
1694+im = Function(name = 'im',
1695+ arguments = ('z',),
1696+ expression = 'z.imag')
1697+
1698+# New functions (trigonometric)
1699+
1700+sec = Function(name = 'sec',
1701+ arguments = ('z',),
1702+ expression = '1./cmath.cos(z)')
1703+
1704+asec = Function(name = 'asec',
1705+ arguments = ('z',),
1706+ expression = 'cmath.acos(1./z)')
1707+
1708+csc = Function(name = 'csc',
1709+ arguments = ('z',),
1710+ expression = '1./cmath.sin(z)')
1711+
1712+acsc = Function(name = 'acsc',
1713+ arguments = ('z',),
1714+ expression = 'cmath.asin(1./z)')
1715+
1716+
1717+
1718+
1719
1720=== added file 'models/TopEffTh/lorentz.py'
1721--- models/TopEffTh/lorentz.py 1970-01-01 00:00:00 +0000
1722+++ models/TopEffTh/lorentz.py 2011-10-12 10:39:26 +0000
1723@@ -0,0 +1,367 @@
1724+# This file was automatically created by FeynRules $Revision: 821 $
1725+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
1726+# Date: Mon 3 Oct 2011 13:27:06
1727+
1728+
1729+from object_library import all_lorentz, Lorentz
1730+
1731+from function_library import complexconjugate, re, im, csc, sec, acsc, asec
1732+
1733+
1734+
1735+UUV1 = Lorentz(name = 'UUV1',
1736+ spins = [ -1, -1, 3 ],
1737+ structure = 'P(3,2) + P(3,3)')
1738+
1739+SSS1 = Lorentz(name = 'SSS1',
1740+ spins = [ 1, 1, 1 ],
1741+ structure = '1')
1742+
1743+FFS1 = Lorentz(name = 'FFS1',
1744+ spins = [ 2, 2, 1 ],
1745+ structure = 'Identity(2,1)')
1746+
1747+FFS2 = Lorentz(name = 'FFS2',
1748+ spins = [ 2, 2, 1 ],
1749+ structure = 'P(-1,3)*Gamma(-1,2,-2)*ProjM(-2,1)')
1750+
1751+FFV1 = Lorentz(name = 'FFV1',
1752+ spins = [ 2, 2, 3 ],
1753+ structure = 'Gamma(3,2,1)')
1754+
1755+FFV2 = Lorentz(name = 'FFV2',
1756+ spins = [ 2, 2, 3 ],
1757+ structure = 'Gamma(3,2,-1)*ProjM(-1,1)')
1758+
1759+FFV3 = Lorentz(name = 'FFV3',
1760+ spins = [ 2, 2, 3 ],
1761+ structure = '-(P(-1,3)*Gamma(-1,-3,-2)*Gamma(3,2,-3)*ProjM(-2,1)) + P(3,3)*ProjM(2,1)')
1762+
1763+FFV4 = Lorentz(name = 'FFV4',
1764+ spins = [ 2, 2, 3 ],
1765+ structure = 'Gamma(3,2,-1)*ProjP(-1,1)')
1766+
1767+FFV5 = Lorentz(name = 'FFV5',
1768+ spins = [ 2, 2, 3 ],
1769+ structure = 'Gamma(3,2,-1)*ProjM(-1,1) - 2*Gamma(3,2,-1)*ProjP(-1,1)')
1770+
1771+FFV6 = Lorentz(name = 'FFV6',
1772+ spins = [ 2, 2, 3 ],
1773+ structure = 'Gamma(3,2,-1)*ProjM(-1,1) + 2*Gamma(3,2,-1)*ProjP(-1,1)')
1774+
1775+FFV7 = Lorentz(name = 'FFV7',
1776+ spins = [ 2, 2, 3 ],
1777+ structure = 'Gamma(3,2,-1)*ProjM(-1,1) + 4*Gamma(3,2,-1)*ProjP(-1,1)')
1778+
1779+FFV8 = Lorentz(name = 'FFV8',
1780+ spins = [ 2, 2, 3 ],
1781+ structure = '-(P(-1,3)*Gamma(-1,-3,-2)*Gamma(3,2,-3)*ProjP(-2,1)) + P(3,3)*ProjP(2,1)')
1782+
1783+VVS1 = Lorentz(name = 'VVS1',
1784+ spins = [ 3, 3, 1 ],
1785+ structure = 'Metric(1,2)')
1786+
1787+VVS2 = Lorentz(name = 'VVS2',
1788+ spins = [ 3, 3, 1 ],
1789+ structure = 'P(1,2)*P(2,1) - P(-1,1)*P(-1,2)*Metric(1,2)')
1790+
1791+VVV1 = Lorentz(name = 'VVV1',
1792+ spins = [ 3, 3, 3 ],
1793+ 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)')
1794+
1795+VVV2 = Lorentz(name = 'VVV2',
1796+ spins = [ 3, 3, 3 ],
1797+ structure = '-(P(1,2)*P(2,3)*P(3,1)) + P(1,3)*P(2,1)*P(3,2) + P(-1,2)*P(-1,3)*P(3,1)*Metric(1,2) - P(-1,1)*P(-1,3)*P(3,2)*Metric(1,2) - P(-1,2)*P(-1,3)*P(2,1)*Metric(1,3) + P(-1,1)*P(-1,2)*P(2,3)*Metric(1,3) + P(-1,1)*P(-1,3)*P(1,2)*Metric(2,3) - P(-1,1)*P(-1,2)*P(1,3)*Metric(2,3)')
1798+
1799+SSSS1 = Lorentz(name = 'SSSS1',
1800+ spins = [ 1, 1, 1, 1 ],
1801+ structure = '1')
1802+
1803+FFSS1 = Lorentz(name = 'FFSS1',
1804+ spins = [ 2, 2, 1, 1 ],
1805+ structure = 'P(-1,3)*Gamma(-1,2,-2)*ProjM(-2,1) + P(-1,4)*Gamma(-1,2,-2)*ProjM(-2,1)')
1806+
1807+FFVS1 = Lorentz(name = 'FFVS1',
1808+ spins = [ 2, 2, 3, 1 ],
1809+ structure = 'Gamma(3,2,-1)*ProjM(-1,1)')
1810+
1811+FFVS2 = Lorentz(name = 'FFVS2',
1812+ spins = [ 2, 2, 3, 1 ],
1813+ structure = '-(P(-1,3)*Gamma(-1,-3,-2)*Gamma(3,2,-3)*ProjM(-2,1)) + P(3,3)*ProjM(2,1)')
1814+
1815+FFVS3 = Lorentz(name = 'FFVS3',
1816+ spins = [ 2, 2, 3, 1 ],
1817+ structure = '-(P(-1,3)*Gamma(-1,-3,-2)*Gamma(3,2,-3)*ProjP(-2,1)) + P(3,3)*ProjP(2,1)')
1818+
1819+FFVV1 = Lorentz(name = 'FFVV1',
1820+ spins = [ 2, 2, 3, 3 ],
1821+ structure = 'Gamma(3,2,-2)*Gamma(4,-2,-1)*ProjM(-1,1) - Metric(3,4)*ProjM(2,1)')
1822+
1823+FFVV2 = Lorentz(name = 'FFVV2',
1824+ spins = [ 2, 2, 3, 3 ],
1825+ structure = 'Gamma(3,2,-2)*Gamma(4,-2,-1)*ProjP(-1,1) - Metric(3,4)*ProjP(2,1)')
1826+
1827+VVSS1 = Lorentz(name = 'VVSS1',
1828+ spins = [ 3, 3, 1, 1 ],
1829+ structure = 'Metric(1,2)')
1830+
1831+VVSS2 = Lorentz(name = 'VVSS2',
1832+ spins = [ 3, 3, 1, 1 ],
1833+ structure = 'P(1,2)*P(2,1) - P(-1,1)*P(-1,2)*Metric(1,2)')
1834+
1835+VVVS1 = Lorentz(name = 'VVVS1',
1836+ spins = [ 3, 3, 3, 1 ],
1837+ 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)')
1838+
1839+VVVV1 = Lorentz(name = 'VVVV1',
1840+ spins = [ 3, 3, 3, 3 ],
1841+ structure = 'Metric(1,4)*Metric(2,3) - Metric(1,3)*Metric(2,4)')
1842+
1843+VVVV2 = Lorentz(name = 'VVVV2',
1844+ spins = [ 3, 3, 3, 3 ],
1845+ structure = 'P(3,2)*P(4,1)*Metric(1,2) - P(3,1)*P(4,2)*Metric(1,2) + P(2,1)*P(4,2)*Metric(1,3) + P(2,4)*P(4,3)*Metric(1,3) - P(2,1)*P(3,2)*Metric(1,4) - P(2,3)*P(3,4)*Metric(1,4) - P(1,2)*P(4,1)*Metric(2,3) - P(1,4)*P(4,3)*Metric(2,3) + P(-1,1)*P(-1,2)*Metric(1,4)*Metric(2,3) + P(-1,3)*P(-1,4)*Metric(1,4)*Metric(2,3) + P(1,2)*P(3,1)*Metric(2,4) + P(1,3)*P(3,4)*Metric(2,4) - P(-1,1)*P(-1,2)*Metric(1,3)*Metric(2,4) - P(-1,3)*P(-1,4)*Metric(1,3)*Metric(2,4) + P(1,4)*P(2,3)*Metric(3,4) - P(1,3)*P(2,4)*Metric(3,4)')
1846+
1847+VVVV3 = Lorentz(name = 'VVVV3',
1848+ spins = [ 3, 3, 3, 3 ],
1849+ structure = 'Metric(1,4)*Metric(2,3) + Metric(1,3)*Metric(2,4) - 2*Metric(1,2)*Metric(3,4)')
1850+
1851+VVVV4 = Lorentz(name = 'VVVV4',
1852+ spins = [ 3, 3, 3, 3 ],
1853+ structure = 'Metric(1,4)*Metric(2,3) - Metric(1,2)*Metric(3,4)')
1854+
1855+VVVV5 = Lorentz(name = 'VVVV5',
1856+ spins = [ 3, 3, 3, 3 ],
1857+ structure = 'Metric(1,3)*Metric(2,4) - Metric(1,2)*Metric(3,4)')
1858+
1859+VVVV6 = Lorentz(name = 'VVVV6',
1860+ spins = [ 3, 3, 3, 3 ],
1861+ structure = 'Metric(1,4)*Metric(2,3) - (Metric(1,3)*Metric(2,4))/2. - (Metric(1,2)*Metric(3,4))/2.')
1862+
1863+VVVV7 = Lorentz(name = 'VVVV7',
1864+ spins = [ 3, 3, 3, 3 ],
1865+ structure = 'P(3,4)*P(4,1)*Metric(1,2) + P(3,2)*P(4,3)*Metric(1,2) - P(2,4)*P(4,1)*Metric(1,3) - P(2,3)*P(4,2)*Metric(1,3) + P(2,4)*P(3,1)*Metric(1,4) - P(2,1)*P(3,4)*Metric(1,4) + P(1,3)*P(4,2)*Metric(2,3) - P(1,2)*P(4,3)*Metric(2,3) - P(1,4)*P(3,1)*Metric(2,4) - P(1,3)*P(3,2)*Metric(2,4) + P(-1,2)*P(-1,3)*Metric(1,3)*Metric(2,4) + P(-1,1)*P(-1,4)*Metric(1,3)*Metric(2,4) + P(1,4)*P(2,1)*Metric(3,4) + P(1,2)*P(2,3)*Metric(3,4) - P(-1,2)*P(-1,3)*Metric(1,2)*Metric(3,4) - P(-1,1)*P(-1,4)*Metric(1,2)*Metric(3,4)')
1866+
1867+VVVV8 = Lorentz(name = 'VVVV8',
1868+ spins = [ 3, 3, 3, 3 ],
1869+ structure = 'P(3,4)*P(4,2)*Metric(1,2) + P(3,1)*P(4,3)*Metric(1,2) + P(2,3)*P(4,1)*Metric(1,3) - P(2,1)*P(4,3)*Metric(1,3) - P(2,3)*P(3,1)*Metric(1,4) - P(2,4)*P(3,2)*Metric(1,4) - P(1,3)*P(4,1)*Metric(2,3) - P(1,4)*P(4,2)*Metric(2,3) + P(-1,1)*P(-1,3)*Metric(1,4)*Metric(2,3) + P(-1,2)*P(-1,4)*Metric(1,4)*Metric(2,3) + P(1,4)*P(3,2)*Metric(2,4) - P(1,2)*P(3,4)*Metric(2,4) + P(1,3)*P(2,1)*Metric(3,4) + P(1,2)*P(2,4)*Metric(3,4) - P(-1,1)*P(-1,3)*Metric(1,2)*Metric(3,4) - P(-1,2)*P(-1,4)*Metric(1,2)*Metric(3,4)')
1870+
1871+FFVSS1 = Lorentz(name = 'FFVSS1',
1872+ spins = [ 2, 2, 3, 1, 1 ],
1873+ structure = 'Gamma(3,2,-1)*ProjM(-1,1)')
1874+
1875+FFVVS1 = Lorentz(name = 'FFVVS1',
1876+ spins = [ 2, 2, 3, 3, 1 ],
1877+ structure = 'Gamma(3,2,-2)*Gamma(4,-2,-1)*ProjM(-1,1) - Metric(3,4)*ProjM(2,1)')
1878+
1879+FFVVS2 = Lorentz(name = 'FFVVS2',
1880+ spins = [ 2, 2, 3, 3, 1 ],
1881+ structure = 'Gamma(3,2,-2)*Gamma(4,-2,-1)*ProjP(-1,1) - Metric(3,4)*ProjP(2,1)')
1882+
1883+VVVSS1 = Lorentz(name = 'VVVSS1',
1884+ spins = [ 3, 3, 3, 1, 1 ],
1885+ 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)')
1886+
1887+VVVVS1 = Lorentz(name = 'VVVVS1',
1888+ spins = [ 3, 3, 3, 3, 1 ],
1889+ structure = 'Metric(1,4)*Metric(2,3) - Metric(1,3)*Metric(2,4)')
1890+
1891+VVVVS2 = Lorentz(name = 'VVVVS2',
1892+ spins = [ 3, 3, 3, 3, 1 ],
1893+ structure = 'Metric(1,4)*Metric(2,3) - Metric(1,2)*Metric(3,4)')
1894+
1895+VVVVS3 = Lorentz(name = 'VVVVS3',
1896+ spins = [ 3, 3, 3, 3, 1 ],
1897+ structure = 'Metric(1,3)*Metric(2,4) - Metric(1,2)*Metric(3,4)')
1898+
1899+VVVVV1 = Lorentz(name = 'VVVVV1',
1900+ spins = [ 3, 3, 3, 3, 3 ],
1901+ structure = 'P(5,3)*Metric(1,4)*Metric(2,3) - P(4,3)*Metric(1,5)*Metric(2,3) - P(5,3)*Metric(1,3)*Metric(2,4) + P(4,3)*Metric(1,3)*Metric(2,5)')
1902+
1903+VVVVV2 = Lorentz(name = 'VVVVV2',
1904+ spins = [ 3, 3, 3, 3, 3 ],
1905+ structure = 'P(5,4)*Metric(1,4)*Metric(2,3) - P(5,4)*Metric(1,3)*Metric(2,4) + P(3,4)*Metric(1,5)*Metric(2,4) - P(3,4)*Metric(1,4)*Metric(2,5)')
1906+
1907+VVVVV3 = Lorentz(name = 'VVVVV3',
1908+ spins = [ 3, 3, 3, 3, 3 ],
1909+ structure = 'P(4,5)*Metric(1,5)*Metric(2,3) - P(3,5)*Metric(1,5)*Metric(2,4) - P(4,5)*Metric(1,3)*Metric(2,5) + P(3,5)*Metric(1,4)*Metric(2,5)')
1910+
1911+VVVVV4 = Lorentz(name = 'VVVVV4',
1912+ spins = [ 3, 3, 3, 3, 3 ],
1913+ structure = 'P(5,1)*Metric(1,3)*Metric(2,4) - P(4,1)*Metric(1,3)*Metric(2,5) - P(5,1)*Metric(1,2)*Metric(3,4) + P(4,1)*Metric(1,2)*Metric(3,5)')
1914+
1915+VVVVV5 = Lorentz(name = 'VVVVV5',
1916+ spins = [ 3, 3, 3, 3, 3 ],
1917+ structure = 'P(5,2)*Metric(1,4)*Metric(2,3) - P(4,2)*Metric(1,5)*Metric(2,3) - P(5,2)*Metric(1,2)*Metric(3,4) + P(4,2)*Metric(1,2)*Metric(3,5)')
1918+
1919+VVVVV6 = Lorentz(name = 'VVVVV6',
1920+ spins = [ 3, 3, 3, 3, 3 ],
1921+ structure = 'P(3,1)*Metric(1,5)*Metric(2,4) - P(3,1)*Metric(1,4)*Metric(2,5) - P(2,1)*Metric(1,5)*Metric(3,4) + P(2,1)*Metric(1,4)*Metric(3,5)')
1922+
1923+VVVVV7 = Lorentz(name = 'VVVVV7',
1924+ spins = [ 3, 3, 3, 3, 3 ],
1925+ structure = 'P(5,4)*Metric(1,4)*Metric(2,3) - P(5,4)*Metric(1,2)*Metric(3,4) + P(2,4)*Metric(1,5)*Metric(3,4) - P(2,4)*Metric(1,4)*Metric(3,5)')
1926+
1927+VVVVV8 = Lorentz(name = 'VVVVV8',
1928+ spins = [ 3, 3, 3, 3, 3 ],
1929+ structure = 'P(4,5)*Metric(1,5)*Metric(2,3) - P(2,5)*Metric(1,5)*Metric(3,4) - P(4,5)*Metric(1,2)*Metric(3,5) + P(2,5)*Metric(1,4)*Metric(3,5)')
1930+
1931+VVVVV9 = Lorentz(name = 'VVVVV9',
1932+ spins = [ 3, 3, 3, 3, 3 ],
1933+ structure = 'P(3,2)*Metric(1,5)*Metric(2,4) - P(3,2)*Metric(1,4)*Metric(2,5) + P(1,2)*Metric(2,5)*Metric(3,4) - P(1,2)*Metric(2,4)*Metric(3,5)')
1934+
1935+VVVVV10 = Lorentz(name = 'VVVVV10',
1936+ spins = [ 3, 3, 3, 3, 3 ],
1937+ structure = 'P(2,3)*Metric(1,5)*Metric(3,4) - P(1,3)*Metric(2,5)*Metric(3,4) - P(2,3)*Metric(1,4)*Metric(3,5) + P(1,3)*Metric(2,4)*Metric(3,5)')
1938+
1939+VVVVV11 = Lorentz(name = 'VVVVV11',
1940+ spins = [ 3, 3, 3, 3, 3 ],
1941+ structure = 'P(5,4)*Metric(1,3)*Metric(2,4) - P(5,4)*Metric(1,2)*Metric(3,4) + P(1,4)*Metric(2,5)*Metric(3,4) - P(1,4)*Metric(2,4)*Metric(3,5)')
1942+
1943+VVVVV12 = Lorentz(name = 'VVVVV12',
1944+ spins = [ 3, 3, 3, 3, 3 ],
1945+ structure = 'P(4,5)*Metric(1,3)*Metric(2,5) - P(1,5)*Metric(2,5)*Metric(3,4) - P(4,5)*Metric(1,2)*Metric(3,5) + P(1,5)*Metric(2,4)*Metric(3,5)')
1946+
1947+VVVVV13 = Lorentz(name = 'VVVVV13',
1948+ spins = [ 3, 3, 3, 3, 3 ],
1949+ structure = 'P(5,1)*Metric(1,4)*Metric(2,3) - P(3,1)*Metric(1,4)*Metric(2,5) - P(5,1)*Metric(1,2)*Metric(3,4) + P(3,1)*Metric(1,2)*Metric(4,5)')
1950+
1951+VVVVV14 = Lorentz(name = 'VVVVV14',
1952+ spins = [ 3, 3, 3, 3, 3 ],
1953+ structure = 'P(4,1)*Metric(1,5)*Metric(2,3) - P(3,1)*Metric(1,5)*Metric(2,4) - P(4,1)*Metric(1,2)*Metric(3,5) + P(3,1)*Metric(1,2)*Metric(4,5)')
1954+
1955+VVVVV15 = Lorentz(name = 'VVVVV15',
1956+ spins = [ 3, 3, 3, 3, 3 ],
1957+ structure = 'P(5,2)*Metric(1,3)*Metric(2,4) - P(3,2)*Metric(1,5)*Metric(2,4) - P(5,2)*Metric(1,2)*Metric(3,4) + P(3,2)*Metric(1,2)*Metric(4,5)')
1958+
1959+VVVVV16 = Lorentz(name = 'VVVVV16',
1960+ spins = [ 3, 3, 3, 3, 3 ],
1961+ structure = 'P(4,2)*Metric(1,3)*Metric(2,5) - P(3,2)*Metric(1,4)*Metric(2,5) - P(4,2)*Metric(1,2)*Metric(3,5) + P(3,2)*Metric(1,2)*Metric(4,5)')
1962+
1963+VVVVV17 = Lorentz(name = 'VVVVV17',
1964+ spins = [ 3, 3, 3, 3, 3 ],
1965+ structure = 'P(4,1)*Metric(1,5)*Metric(2,3) - P(4,1)*Metric(1,3)*Metric(2,5) - P(2,1)*Metric(1,5)*Metric(3,4) + P(2,1)*Metric(1,3)*Metric(4,5)')
1966+
1967+VVVVV18 = Lorentz(name = 'VVVVV18',
1968+ spins = [ 3, 3, 3, 3, 3 ],
1969+ structure = 'P(5,1)*Metric(1,4)*Metric(2,3) - P(5,1)*Metric(1,3)*Metric(2,4) - P(2,1)*Metric(1,4)*Metric(3,5) + P(2,1)*Metric(1,3)*Metric(4,5)')
1970+
1971+VVVVV19 = Lorentz(name = 'VVVVV19',
1972+ spins = [ 3, 3, 3, 3, 3 ],
1973+ structure = 'P(5,3)*Metric(1,3)*Metric(2,4) - P(5,3)*Metric(1,2)*Metric(3,4) + P(2,3)*Metric(1,5)*Metric(3,4) - P(2,3)*Metric(1,3)*Metric(4,5)')
1974+
1975+VVVVV20 = Lorentz(name = 'VVVVV20',
1976+ spins = [ 3, 3, 3, 3, 3 ],
1977+ structure = 'P(4,3)*Metric(1,3)*Metric(2,5) - P(4,3)*Metric(1,2)*Metric(3,5) + P(2,3)*Metric(1,4)*Metric(3,5) - P(2,3)*Metric(1,3)*Metric(4,5)')
1978+
1979+VVVVV21 = Lorentz(name = 'VVVVV21',
1980+ spins = [ 3, 3, 3, 3, 3 ],
1981+ structure = 'P(3,4)*Metric(1,4)*Metric(2,5) - P(2,4)*Metric(1,4)*Metric(3,5) - P(3,4)*Metric(1,2)*Metric(4,5) + P(2,4)*Metric(1,3)*Metric(4,5)')
1982+
1983+VVVVV22 = Lorentz(name = 'VVVVV22',
1984+ spins = [ 3, 3, 3, 3, 3 ],
1985+ structure = 'P(3,5)*Metric(1,5)*Metric(2,4) - P(2,5)*Metric(1,5)*Metric(3,4) - P(3,5)*Metric(1,2)*Metric(4,5) + P(2,5)*Metric(1,3)*Metric(4,5)')
1986+
1987+VVVVV23 = Lorentz(name = 'VVVVV23',
1988+ spins = [ 3, 3, 3, 3, 3 ],
1989+ structure = 'P(4,2)*Metric(1,5)*Metric(2,3) - P(4,2)*Metric(1,3)*Metric(2,5) + P(1,2)*Metric(2,5)*Metric(3,4) - P(1,2)*Metric(2,3)*Metric(4,5)')
1990+
1991+VVVVV24 = Lorentz(name = 'VVVVV24',
1992+ spins = [ 3, 3, 3, 3, 3 ],
1993+ structure = 'P(5,2)*Metric(1,4)*Metric(2,3) - P(5,2)*Metric(1,3)*Metric(2,4) + P(1,2)*Metric(2,4)*Metric(3,5) - P(1,2)*Metric(2,3)*Metric(4,5)')
1994+
1995+VVVVV25 = Lorentz(name = 'VVVVV25',
1996+ spins = [ 3, 3, 3, 3, 3 ],
1997+ structure = 'P(5,3)*Metric(1,4)*Metric(2,3) - P(5,3)*Metric(1,2)*Metric(3,4) + P(1,3)*Metric(2,5)*Metric(3,4) - P(1,3)*Metric(2,3)*Metric(4,5)')
1998+
1999+VVVVV26 = Lorentz(name = 'VVVVV26',
2000+ spins = [ 3, 3, 3, 3, 3 ],
2001+ structure = 'P(4,3)*Metric(1,5)*Metric(2,3) - P(4,3)*Metric(1,2)*Metric(3,5) + P(1,3)*Metric(2,4)*Metric(3,5) - P(1,3)*Metric(2,3)*Metric(4,5)')
2002+
2003+VVVVV27 = Lorentz(name = 'VVVVV27',
2004+ spins = [ 3, 3, 3, 3, 3 ],
2005+ structure = 'P(3,4)*Metric(1,5)*Metric(2,4) - P(1,4)*Metric(2,4)*Metric(3,5) - P(3,4)*Metric(1,2)*Metric(4,5) + P(1,4)*Metric(2,3)*Metric(4,5)')
2006+
2007+VVVVV28 = Lorentz(name = 'VVVVV28',
2008+ spins = [ 3, 3, 3, 3, 3 ],
2009+ structure = 'P(2,4)*Metric(1,5)*Metric(3,4) - P(1,4)*Metric(2,5)*Metric(3,4) - P(2,4)*Metric(1,3)*Metric(4,5) + P(1,4)*Metric(2,3)*Metric(4,5)')
2010+
2011+VVVVV29 = Lorentz(name = 'VVVVV29',
2012+ spins = [ 3, 3, 3, 3, 3 ],
2013+ structure = 'P(3,5)*Metric(1,4)*Metric(2,5) - P(1,5)*Metric(2,5)*Metric(3,4) - P(3,5)*Metric(1,2)*Metric(4,5) + P(1,5)*Metric(2,3)*Metric(4,5)')
2014+
2015+VVVVV30 = Lorentz(name = 'VVVVV30',
2016+ spins = [ 3, 3, 3, 3, 3 ],
2017+ structure = 'P(2,5)*Metric(1,4)*Metric(3,5) - P(1,5)*Metric(2,4)*Metric(3,5) - P(2,5)*Metric(1,3)*Metric(4,5) + P(1,5)*Metric(2,3)*Metric(4,5)')
2018+
2019+VVVVSS1 = Lorentz(name = 'VVVVSS1',
2020+ spins = [ 3, 3, 3, 3, 1, 1 ],
2021+ structure = 'Metric(1,4)*Metric(2,3) - Metric(1,3)*Metric(2,4)')
2022+
2023+VVVVSS2 = Lorentz(name = 'VVVVSS2',
2024+ spins = [ 3, 3, 3, 3, 1, 1 ],
2025+ structure = 'Metric(1,4)*Metric(2,3) - Metric(1,2)*Metric(3,4)')
2026+
2027+VVVVSS3 = Lorentz(name = 'VVVVSS3',
2028+ spins = [ 3, 3, 3, 3, 1, 1 ],
2029+ structure = 'Metric(1,3)*Metric(2,4) - Metric(1,2)*Metric(3,4)')
2030+
2031+VVVVVV1 = Lorentz(name = 'VVVVVV1',
2032+ spins = [ 3, 3, 3, 3, 3, 3 ],
2033+ structure = 'Metric(1,6)*Metric(2,4)*Metric(3,5) - Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,5)*Metric(2,4)*Metric(3,6) + Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,3)*Metric(2,6)*Metric(4,5) + Metric(1,5)*Metric(2,3)*Metric(4,6) - Metric(1,3)*Metric(2,5)*Metric(4,6)')
2034+
2035+VVVVVV2 = Lorentz(name = 'VVVVVV2',
2036+ spins = [ 3, 3, 3, 3, 3, 3 ],
2037+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,5)*Metric(2,6)*Metric(3,4) + Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) + Metric(1,5)*Metric(2,3)*Metric(4,6) - Metric(1,2)*Metric(3,5)*Metric(4,6)')
2038+
2039+VVVVVV3 = Lorentz(name = 'VVVVVV3',
2040+ spins = [ 3, 3, 3, 3, 3, 3 ],
2041+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,5)*Metric(2,6)*Metric(3,4) - Metric(1,6)*Metric(2,4)*Metric(3,5) + Metric(1,5)*Metric(2,4)*Metric(3,6) + Metric(1,3)*Metric(2,6)*Metric(4,5) - Metric(1,2)*Metric(3,6)*Metric(4,5) - Metric(1,3)*Metric(2,5)*Metric(4,6) + Metric(1,2)*Metric(3,5)*Metric(4,6)')
2042+
2043+VVVVVV4 = Lorentz(name = 'VVVVVV4',
2044+ spins = [ 3, 3, 3, 3, 3, 3 ],
2045+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,5)*Metric(2,6)*Metric(3,4) + Metric(1,5)*Metric(2,4)*Metric(3,6) - Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,3)*Metric(2,6)*Metric(4,5) + Metric(1,4)*Metric(2,3)*Metric(5,6) - Metric(1,3)*Metric(2,4)*Metric(5,6)')
2046+
2047+VVVVVV5 = Lorentz(name = 'VVVVVV5',
2048+ spins = [ 3, 3, 3, 3, 3, 3 ],
2049+ structure = 'Metric(1,6)*Metric(2,4)*Metric(3,5) - Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) + Metric(1,3)*Metric(2,5)*Metric(4,6) - Metric(1,2)*Metric(3,5)*Metric(4,6) + Metric(1,4)*Metric(2,3)*Metric(5,6) - Metric(1,3)*Metric(2,4)*Metric(5,6)')
2050+
2051+VVVVVV6 = Lorentz(name = 'VVVVVV6',
2052+ spins = [ 3, 3, 3, 3, 3, 3 ],
2053+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,5)*Metric(2,6)*Metric(3,4) - Metric(1,6)*Metric(2,4)*Metric(3,5) + Metric(1,4)*Metric(2,6)*Metric(3,5) + Metric(1,5)*Metric(2,3)*Metric(4,6) - Metric(1,3)*Metric(2,5)*Metric(4,6) - Metric(1,4)*Metric(2,3)*Metric(5,6) + Metric(1,3)*Metric(2,4)*Metric(5,6)')
2054+
2055+VVVVVV7 = Lorentz(name = 'VVVVVV7',
2056+ spins = [ 3, 3, 3, 3, 3, 3 ],
2057+ structure = 'Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,5)*Metric(2,4)*Metric(3,6) - Metric(1,3)*Metric(2,6)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) + Metric(1,5)*Metric(2,3)*Metric(4,6) - Metric(1,2)*Metric(3,5)*Metric(4,6) - Metric(1,4)*Metric(2,3)*Metric(5,6) + Metric(1,3)*Metric(2,4)*Metric(5,6)')
2058+
2059+VVVVVV8 = Lorentz(name = 'VVVVVV8',
2060+ spins = [ 3, 3, 3, 3, 3, 3 ],
2061+ structure = 'Metric(1,5)*Metric(2,6)*Metric(3,4) + Metric(1,6)*Metric(2,4)*Metric(3,5) - Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,5)*Metric(2,4)*Metric(3,6) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) + Metric(1,4)*Metric(2,3)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2062+
2063+VVVVVV9 = Lorentz(name = 'VVVVVV9',
2064+ spins = [ 3, 3, 3, 3, 3, 3 ],
2065+ structure = 'Metric(1,5)*Metric(2,6)*Metric(3,4) - Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,3)*Metric(2,6)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) - Metric(1,5)*Metric(2,3)*Metric(4,6) + Metric(1,3)*Metric(2,5)*Metric(4,6) + Metric(1,4)*Metric(2,3)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2066+
2067+VVVVVV10 = Lorentz(name = 'VVVVVV10',
2068+ spins = [ 3, 3, 3, 3, 3, 3 ],
2069+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,6)*Metric(2,4)*Metric(3,5) + Metric(1,5)*Metric(2,4)*Metric(3,6) - Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,5)*Metric(2,3)*Metric(4,6) + Metric(1,2)*Metric(3,5)*Metric(4,6) + Metric(1,4)*Metric(2,3)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2070+
2071+VVVVVV11 = Lorentz(name = 'VVVVVV11',
2072+ spins = [ 3, 3, 3, 3, 3, 3 ],
2073+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,3)*Metric(2,6)*Metric(4,5) - Metric(1,3)*Metric(2,5)*Metric(4,6) + Metric(1,2)*Metric(3,5)*Metric(4,6) + Metric(1,4)*Metric(2,3)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2074+
2075+VVVVVV12 = Lorentz(name = 'VVVVVV12',
2076+ spins = [ 3, 3, 3, 3, 3, 3 ],
2077+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,6)*Metric(2,4)*Metric(3,5) + Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,3)*Metric(2,6)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) + Metric(1,3)*Metric(2,4)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2078+
2079+VVVVVV13 = Lorentz(name = 'VVVVVV13',
2080+ spins = [ 3, 3, 3, 3, 3, 3 ],
2081+ structure = 'Metric(1,6)*Metric(2,5)*Metric(3,4) - Metric(1,5)*Metric(2,4)*Metric(3,6) - Metric(1,6)*Metric(2,3)*Metric(4,5) + Metric(1,2)*Metric(3,6)*Metric(4,5) + Metric(1,5)*Metric(2,3)*Metric(4,6) - Metric(1,3)*Metric(2,5)*Metric(4,6) + Metric(1,3)*Metric(2,4)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2082+
2083+VVVVVV14 = Lorentz(name = 'VVVVVV14',
2084+ spins = [ 3, 3, 3, 3, 3, 3 ],
2085+ structure = 'Metric(1,5)*Metric(2,6)*Metric(3,4) - Metric(1,6)*Metric(2,4)*Metric(3,5) + Metric(1,6)*Metric(2,3)*Metric(4,5) - Metric(1,3)*Metric(2,6)*Metric(4,5) - Metric(1,5)*Metric(2,3)*Metric(4,6) + Metric(1,2)*Metric(3,5)*Metric(4,6) + Metric(1,3)*Metric(2,4)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2086+
2087+VVVVVV15 = Lorentz(name = 'VVVVVV15',
2088+ spins = [ 3, 3, 3, 3, 3, 3 ],
2089+ structure = 'Metric(1,5)*Metric(2,6)*Metric(3,4) - Metric(1,4)*Metric(2,6)*Metric(3,5) - Metric(1,5)*Metric(2,4)*Metric(3,6) + Metric(1,4)*Metric(2,5)*Metric(3,6) - Metric(1,3)*Metric(2,5)*Metric(4,6) + Metric(1,2)*Metric(3,5)*Metric(4,6) + Metric(1,3)*Metric(2,4)*Metric(5,6) - Metric(1,2)*Metric(3,4)*Metric(5,6)')
2090+
2091
2092=== added file 'models/TopEffTh/note.pdf'
2093Binary files models/TopEffTh/note.pdf 1970-01-01 00:00:00 +0000 and models/TopEffTh/note.pdf 2011-10-12 10:39:26 +0000 differ
2094=== added file 'models/TopEffTh/object_library.py'
2095--- models/TopEffTh/object_library.py 1970-01-01 00:00:00 +0000
2096+++ models/TopEffTh/object_library.py 2011-10-12 10:39:26 +0000
2097@@ -0,0 +1,245 @@
2098+##
2099+##
2100+## Feynrules Header
2101+##
2102+##
2103+##
2104+##
2105+##
2106+
2107+import cmath
2108+
2109+
2110+class UFOBaseClass(object):
2111+ """The class from which all FeynRules classes are derived."""
2112+
2113+ require_args = []
2114+
2115+ def __init__(self, *args, **options):
2116+ assert(len(self.require_args) == len (args))
2117+
2118+ for i, name in enumerate(self.require_args):
2119+ setattr(self, name, args[i])
2120+
2121+ for (option, value) in options.items():
2122+ setattr(self, option, value)
2123+
2124+ def get(self, name):
2125+ return getattr(self, name)
2126+
2127+ def set(self, name, value):
2128+ setattr(self, name, value)
2129+
2130+ def get_all(self):
2131+ """Return a dictionary containing all the information of the object"""
2132+ return self.__dict__
2133+
2134+ def __str__(self):
2135+ return self.name
2136+
2137+ def nice_string(self):
2138+ """ return string with the full information """
2139+ return '\n'.join(['%s \t: %s' %(name, value) for name, value in self.__dict__.items()])
2140+
2141+ def __repr__(self):
2142+ replacements = [
2143+ ('+','__plus__'),
2144+ ('-','__minus__'),
2145+ ('@','__at__'),
2146+ ('!','__exclam__'),
2147+ ('?','__quest__'),
2148+ ('*','__star__'),
2149+ ('~','__tilde__')
2150+ ]
2151+ text = self.name
2152+ for orig,sub in replacements:
2153+ text = text.replace(orig,sub)
2154+ return text
2155+
2156+
2157+
2158+all_particles = []
2159+
2160+
2161+
2162+class Particle(UFOBaseClass):
2163+ """A standard Particle"""
2164+
2165+ require_args=['pdg_code', 'name', 'antiname', 'spin', 'color', 'mass', 'width', 'texname', 'antitexname', 'charge']
2166+
2167+ require_args_all = ['pdg_code', 'name', 'antiname', 'spin', 'color', 'mass', 'width', 'texname', 'antitexname', 'charge', 'line', 'propagating', 'goldstoneboson']
2168+
2169+ def __init__(self, pdg_code, name, antiname, spin, color, mass, width, texname,
2170+ antitexname, charge , line=None, propagating=True, goldstoneboson=False, **options):
2171+
2172+ args= (pdg_code, name, antiname, spin, color, mass, width, texname,
2173+ antitexname, float(charge))
2174+
2175+ UFOBaseClass.__init__(self, *args, **options)
2176+
2177+ global all_particles
2178+ all_particles.append(self)
2179+
2180+ self.propagating = propagating
2181+ self.goldstoneboson= goldstoneboson
2182+
2183+ self.selfconjugate = (name == antiname)
2184+ if 1: #not line:
2185+ self.line = self.find_line_type()
2186+ else:
2187+ self.line = line
2188+
2189+
2190+
2191+
2192+ def find_line_type(self):
2193+ """ find how we draw a line if not defined
2194+ valid output: dashed/straight/wavy/curly/double/swavy/scurly
2195+ """
2196+
2197+ spin = self.spin
2198+ color = self.color
2199+
2200+ #use default
2201+ if spin == 1:
2202+ return 'dashed'
2203+ elif spin == 2:
2204+ if not self.selfconjugate:
2205+ return 'straight'
2206+ elif color == 1:
2207+ return 'swavy'
2208+ else:
2209+ return 'scurly'
2210+ elif spin == 3:
2211+ if color == 1:
2212+ return 'wavy'
2213+
2214+ else:
2215+ return 'curly'
2216+ elif spin == 5:
2217+ return 'double'
2218+ elif spin == -1:
2219+ return 'dotted'
2220+ else:
2221+ return 'dashed' # not supported yet
2222+
2223+ def anti(self):
2224+ if self.selfconjugate:
2225+ raise Exception('%s has no anti particle.' % self.name)
2226+ outdic = {}
2227+ for k,v in self.__dict__.iteritems():
2228+ if k not in self.require_args_all:
2229+ outdic[k] = -v
2230+ if self.color in [1,8]:
2231+ newcolor = self.color
2232+ else:
2233+ newcolor = -self.color
2234+
2235+ return Particle(-self.pdg_code, self.antiname, self.name, self.spin, newcolor, self.mass, self.width,
2236+ self.antitexname, self.texname, -self.charge, self.line, self.propagating, self.goldstoneboson, **outdic)
2237+
2238+
2239+
2240+all_parameters = []
2241+
2242+class Parameter(UFOBaseClass):
2243+
2244+ require_args=['name', 'nature', 'type', 'value', 'texname']
2245+
2246+ def __init__(self, name, nature, type, value, texname, lhablock=None, lhacode=None):
2247+
2248+ args = (name,nature,type,value,texname)
2249+
2250+ UFOBaseClass.__init__(self, *args)
2251+
2252+ args=(name,nature,type,value,texname)
2253+
2254+ global all_parameters
2255+ all_parameters.append(self)
2256+
2257+ if (lhablock is None or lhacode is None) and nature == 'external':
2258+ raise Exception('Need LHA information for external parameter "%s".' % name)
2259+ self.lhablock = lhablock
2260+ self.lhacode = lhacode
2261+
2262+all_vertices = []
2263+
2264+class Vertex(UFOBaseClass):
2265+
2266+ require_args=['name', 'particles', 'color', 'lorentz', 'couplings']
2267+
2268+ def __init__(self, name, particles, color, lorentz, couplings, **opt):
2269+
2270+ args = (name, particles, color, lorentz, couplings)
2271+
2272+ UFOBaseClass.__init__(self, *args, **opt)
2273+
2274+ args=(particles,color,lorentz,couplings)
2275+
2276+ global all_vertices
2277+ all_vertices.append(self)
2278+
2279+all_couplings = []
2280+
2281+class Coupling(UFOBaseClass):
2282+
2283+ require_args=['name', 'value', 'order']
2284+
2285+ def __init__(self, name, value, order, **opt):
2286+
2287+ args =(name, value, order)
2288+ UFOBaseClass.__init__(self, *args, **opt)
2289+ global all_couplings
2290+ all_couplings.append(self)
2291+
2292+
2293+
2294+all_lorentz = []
2295+
2296+class Lorentz(UFOBaseClass):
2297+
2298+ require_args=['name','spins','structure']
2299+
2300+ def __init__(self, name, spins, structure='external', **opt):
2301+ args = (name, spins, structure)
2302+ UFOBaseClass.__init__(self, *args, **opt)
2303+
2304+ global all_lorentz
2305+ all_lorentz.append(self)
2306+
2307+
2308+all_functions = []
2309+
2310+class Function(object):
2311+
2312+ def __init__(self, name, arguments, expression):
2313+
2314+ global all_functions
2315+ all_functions.append(self)
2316+
2317+ self.name = name
2318+ self.arguments = arguments
2319+ self.expr = expression
2320+
2321+ def __call__(self, *opt):
2322+
2323+ for i, arg in enumerate(self.arguments):
2324+ exec('%s = %s' % (arg, opt[i] ))
2325+
2326+ return eval(self.expr)
2327+
2328+all_orders = []
2329+
2330+class CouplingOrder(object):
2331+
2332+ def __init__(self, name, expansion_order, hierarchy, perturbative_expansion = 0):
2333+
2334+ global all_orders
2335+ all_orders.append(self)
2336+
2337+ self.name = name
2338+ self.expansion_order = expansion_order
2339+ self.hierarchy = hierarchy
2340+
2341+
2342+
2343
2344=== added file 'models/TopEffTh/parameters.py'
2345--- models/TopEffTh/parameters.py 1970-01-01 00:00:00 +0000
2346+++ models/TopEffTh/parameters.py 2011-10-12 10:39:26 +0000
2347@@ -0,0 +1,705 @@
2348+# This file was automatically created by FeynRules $Revision: 821 $
2349+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
2350+# Date: Mon 3 Oct 2011 13:27:06
2351+
2352+
2353+
2354+from object_library import all_parameters, Parameter
2355+
2356+
2357+from function_library import complexconjugate, re, im, csc, sec, acsc, asec
2358+
2359+# This is a default parameter object representing 0.
2360+ZERO = Parameter(name = 'ZERO',
2361+ nature = 'internal',
2362+ type = 'real',
2363+ value = '0.0',
2364+ texname = '0')
2365+
2366+# User-defined parameters.
2367+K = Parameter(name = 'K',
2368+ nature = 'external',
2369+ type = 'real',
2370+ value = 100,
2371+ texname = 'K',
2372+ lhablock = 'APPROX',
2373+ lhacode = [ 1 ])
2374+
2375+K1 = Parameter(name = 'K1',
2376+ nature = 'external',
2377+ type = 'real',
2378+ value = 100,
2379+ texname = '\\text{K1}',
2380+ lhablock = 'APPROX',
2381+ lhacode = [ 2 ])
2382+
2383+K2 = Parameter(name = 'K2',
2384+ nature = 'external',
2385+ type = 'real',
2386+ value = 100,
2387+ texname = '\\text{K2}',
2388+ lhablock = 'APPROX',
2389+ lhacode = [ 3 ])
2390+
2391+K3 = Parameter(name = 'K3',
2392+ nature = 'external',
2393+ type = 'real',
2394+ value = 100,
2395+ texname = '\\text{K3}',
2396+ lhablock = 'APPROX',
2397+ lhacode = [ 4 ])
2398+
2399+cabi = Parameter(name = 'cabi',
2400+ nature = 'external',
2401+ type = 'real',
2402+ value = 0.227736,
2403+ texname = '\\theta _c',
2404+ lhablock = 'CKMBLOCK',
2405+ lhacode = [ 1 ])
2406+
2407+Lambda = Parameter(name = 'Lambda',
2408+ nature = 'external',
2409+ type = 'real',
2410+ value = 1000,
2411+ texname = '\\Lambda ',
2412+ lhablock = 'DIM6',
2413+ lhacode = [ 1 ])
2414+
2415+RC3phiq = Parameter(name = 'RC3phiq',
2416+ nature = 'external',
2417+ type = 'real',
2418+ value = 1,
2419+ texname = '\\text{RC}_{\\text{$\\phi $q}}^{\\text{(3)}}',
2420+ lhablock = 'DIM6',
2421+ lhacode = [ 2 ])
2422+
2423+IC3phiq = Parameter(name = 'IC3phiq',
2424+ nature = 'external',
2425+ type = 'real',
2426+ value = 1,
2427+ texname = '\\text{IC}_{\\text{$\\phi $q}}^{\\text{(3)}}',
2428+ lhablock = 'DIM6',
2429+ lhacode = [ 3 ])
2430+
2431+RCtW = Parameter(name = 'RCtW',
2432+ nature = 'external',
2433+ type = 'real',
2434+ value = 1,
2435+ texname = '\\text{RC}_{\\text{tW}}',
2436+ lhablock = 'DIM6',
2437+ lhacode = [ 4 ])
2438+
2439+ICtW = Parameter(name = 'ICtW',
2440+ nature = 'external',
2441+ type = 'real',
2442+ value = 1,
2443+ texname = '\\text{IC}_{\\text{tW}}',
2444+ lhablock = 'DIM6',
2445+ lhacode = [ 5 ])
2446+
2447+RCtG = Parameter(name = 'RCtG',
2448+ nature = 'external',
2449+ type = 'real',
2450+ value = 1,
2451+ texname = '\\text{RC}_{\\text{tG}}',
2452+ lhablock = 'DIM6',
2453+ lhacode = [ 6 ])
2454+
2455+ICtG = Parameter(name = 'ICtG',
2456+ nature = 'external',
2457+ type = 'real',
2458+ value = 1,
2459+ texname = '\\text{IC}_{\\text{tG}}',
2460+ lhablock = 'DIM6',
2461+ lhacode = [ 7 ])
2462+
2463+CG = Parameter(name = 'CG',
2464+ nature = 'external',
2465+ type = 'real',
2466+ value = 1,
2467+ texname = 'C_G',
2468+ lhablock = 'DIM6',
2469+ lhacode = [ 8 ])
2470+
2471+CphiG = Parameter(name = 'CphiG',
2472+ nature = 'external',
2473+ type = 'real',
2474+ value = 1,
2475+ texname = 'C_{\\text{$\\phi $G}}',
2476+ lhablock = 'DIM6',
2477+ lhacode = [ 9 ])
2478+
2479+C13qq = Parameter(name = 'C13qq',
2480+ nature = 'external',
2481+ type = 'real',
2482+ value = 1,
2483+ texname = 'C_{\\text{qq}}^{\\text{(1,3)}}',
2484+ lhablock = 'FourFermion',
2485+ lhacode = [ 1 ])
2486+
2487+C81qq = Parameter(name = 'C81qq',
2488+ nature = 'external',
2489+ type = 'real',
2490+ value = 1,
2491+ texname = 'C_{\\text{qq}}^{\\text{(8,1)}}',
2492+ lhablock = 'FourFermion',
2493+ lhacode = [ 2 ])
2494+
2495+C83qq = Parameter(name = 'C83qq',
2496+ nature = 'external',
2497+ type = 'real',
2498+ value = 1,
2499+ texname = 'C_{\\text{qq}}^{\\text{(8,3)}}',
2500+ lhablock = 'FourFermion',
2501+ lhacode = [ 3 ])
2502+
2503+C8ut = Parameter(name = 'C8ut',
2504+ nature = 'external',
2505+ type = 'real',
2506+ value = 1,
2507+ texname = 'C_{\\text{ut}}^{\\text{(8)}}',
2508+ lhablock = 'FourFermion',
2509+ lhacode = [ 4 ])
2510+
2511+C8dt = Parameter(name = 'C8dt',
2512+ nature = 'external',
2513+ type = 'real',
2514+ value = 1,
2515+ texname = 'C_{\\text{dt}}^{\\text{(8)}}',
2516+ lhablock = 'FourFermion',
2517+ lhacode = [ 5 ])
2518+
2519+C1qu = Parameter(name = 'C1qu',
2520+ nature = 'external',
2521+ type = 'real',
2522+ value = 1,
2523+ texname = 'C_{\\text{qu}}^{\\text{(1)}}',
2524+ lhablock = 'FourFermion',
2525+ lhacode = [ 6 ])
2526+
2527+C1qd = Parameter(name = 'C1qd',
2528+ nature = 'external',
2529+ type = 'real',
2530+ value = 1,
2531+ texname = 'C_{\\text{qd}}^{\\text{(1)}}',
2532+ lhablock = 'FourFermion',
2533+ lhacode = [ 7 ])
2534+
2535+C1qt = Parameter(name = 'C1qt',
2536+ nature = 'external',
2537+ type = 'real',
2538+ value = 1,
2539+ texname = 'C_{\\text{qt}}^{\\text{(1)}}',
2540+ lhablock = 'FourFermion',
2541+ lhacode = [ 8 ])
2542+
2543+aEWM1 = Parameter(name = 'aEWM1',
2544+ nature = 'external',
2545+ type = 'real',
2546+ value = 127.9,
2547+ texname = '\\text{aEWM1}',
2548+ lhablock = 'SMINPUTS',
2549+ lhacode = [ 1 ])
2550+
2551+Gf = Parameter(name = 'Gf',
2552+ nature = 'external',
2553+ type = 'real',
2554+ value = 0.0000116637,
2555+ texname = 'G_f',
2556+ lhablock = 'SMINPUTS',
2557+ lhacode = [ 2 ])
2558+
2559+aS = Parameter(name = 'aS',
2560+ nature = 'external',
2561+ type = 'real',
2562+ value = 0.1184,
2563+ texname = '\\text{aS}',
2564+ lhablock = 'SMINPUTS',
2565+ lhacode = [ 3 ])
2566+
2567+ymdo = Parameter(name = 'ymdo',
2568+ nature = 'external',
2569+ type = 'real',
2570+ value = 0.00504,
2571+ texname = '\\text{ymdo}',
2572+ lhablock = 'YUKAWA',
2573+ lhacode = [ 1 ])
2574+
2575+ymup = Parameter(name = 'ymup',
2576+ nature = 'external',
2577+ type = 'real',
2578+ value = 0.0025499999999999997,
2579+ texname = '\\text{ymup}',
2580+ lhablock = 'YUKAWA',
2581+ lhacode = [ 2 ])
2582+
2583+yms = Parameter(name = 'yms',
2584+ nature = 'external',
2585+ type = 'real',
2586+ value = 0.101,
2587+ texname = '\\text{yms}',
2588+ lhablock = 'YUKAWA',
2589+ lhacode = [ 3 ])
2590+
2591+ymc = Parameter(name = 'ymc',
2592+ nature = 'external',
2593+ type = 'real',
2594+ value = 1.27,
2595+ texname = '\\text{ymc}',
2596+ lhablock = 'YUKAWA',
2597+ lhacode = [ 4 ])
2598+
2599+ymb = Parameter(name = 'ymb',
2600+ nature = 'external',
2601+ type = 'real',
2602+ value = 4.7,
2603+ texname = '\\text{ymb}',
2604+ lhablock = 'YUKAWA',
2605+ lhacode = [ 5 ])
2606+
2607+ymt = Parameter(name = 'ymt',
2608+ nature = 'external',
2609+ type = 'real',
2610+ value = 172.,
2611+ texname = '\\text{ymt}',
2612+ lhablock = 'YUKAWA',
2613+ lhacode = [ 6 ])
2614+
2615+yme = Parameter(name = 'yme',
2616+ nature = 'external',
2617+ type = 'real',
2618+ value = 0.0005110000000000001,
2619+ texname = '\\text{yme}',
2620+ lhablock = 'YUKAWA',
2621+ lhacode = [ 11 ])
2622+
2623+ymm = Parameter(name = 'ymm',
2624+ nature = 'external',
2625+ type = 'real',
2626+ value = 0.10566,
2627+ texname = '\\text{ymm}',
2628+ lhablock = 'YUKAWA',
2629+ lhacode = [ 13 ])
2630+
2631+ymtau = Parameter(name = 'ymtau',
2632+ nature = 'external',
2633+ type = 'real',
2634+ value = 1.777,
2635+ texname = '\\text{ymtau}',
2636+ lhablock = 'YUKAWA',
2637+ lhacode = [ 15 ])
2638+
2639+Me = Parameter(name = 'Me',
2640+ nature = 'external',
2641+ type = 'real',
2642+ value = 0.0005110000000000001,
2643+ texname = '\\text{Me}',
2644+ lhablock = 'MASS',
2645+ lhacode = [ 11 ])
2646+
2647+MM = Parameter(name = 'MM',
2648+ nature = 'external',
2649+ type = 'real',
2650+ value = 0.10566,
2651+ texname = '\\text{MM}',
2652+ lhablock = 'MASS',
2653+ lhacode = [ 13 ])
2654+
2655+MTA = Parameter(name = 'MTA',
2656+ nature = 'external',
2657+ type = 'real',
2658+ value = 1.777,
2659+ texname = '\\text{MTA}',
2660+ lhablock = 'MASS',
2661+ lhacode = [ 15 ])
2662+
2663+MU = Parameter(name = 'MU',
2664+ nature = 'external',
2665+ type = 'real',
2666+ value = 0.0025499999999999997,
2667+ texname = 'M',
2668+ lhablock = 'MASS',
2669+ lhacode = [ 2 ])
2670+
2671+MC = Parameter(name = 'MC',
2672+ nature = 'external',
2673+ type = 'real',
2674+ value = 1.42,
2675+ texname = '\\text{MC}',
2676+ lhablock = 'MASS',
2677+ lhacode = [ 4 ])
2678+
2679+MT = Parameter(name = 'MT',
2680+ nature = 'external',
2681+ type = 'real',
2682+ value = 172,
2683+ texname = '\\text{MT}',
2684+ lhablock = 'MASS',
2685+ lhacode = [ 6 ])
2686+
2687+MD = Parameter(name = 'MD',
2688+ nature = 'external',
2689+ type = 'real',
2690+ value = 0.00504,
2691+ texname = '\\text{MD}',
2692+ lhablock = 'MASS',
2693+ lhacode = [ 1 ])
2694+
2695+MS = Parameter(name = 'MS',
2696+ nature = 'external',
2697+ type = 'real',
2698+ value = 0.101,
2699+ texname = '\\text{MS}',
2700+ lhablock = 'MASS',
2701+ lhacode = [ 3 ])
2702+
2703+MB = Parameter(name = 'MB',
2704+ nature = 'external',
2705+ type = 'real',
2706+ value = 4.7,
2707+ texname = '\\text{MB}',
2708+ lhablock = 'MASS',
2709+ lhacode = [ 5 ])
2710+
2711+MZ = Parameter(name = 'MZ',
2712+ nature = 'external',
2713+ type = 'real',
2714+ value = 91.1876,
2715+ texname = '\\text{MZ}',
2716+ lhablock = 'MASS',
2717+ lhacode = [ 23 ])
2718+
2719+MH = Parameter(name = 'MH',
2720+ nature = 'external',
2721+ type = 'real',
2722+ value = 120,
2723+ texname = '\\text{MH}',
2724+ lhablock = 'MASS',
2725+ lhacode = [ 25 ])
2726+
2727+WT = Parameter(name = 'WT',
2728+ nature = 'external',
2729+ type = 'real',
2730+ value = 1.50833649,
2731+ texname = '\\text{WT}',
2732+ lhablock = 'DECAY',
2733+ lhacode = [ 6 ])
2734+
2735+WZ = Parameter(name = 'WZ',
2736+ nature = 'external',
2737+ type = 'real',
2738+ value = 2.4952,
2739+ texname = '\\text{WZ}',
2740+ lhablock = 'DECAY',
2741+ lhacode = [ 23 ])
2742+
2743+WW = Parameter(name = 'WW',
2744+ nature = 'external',
2745+ type = 'real',
2746+ value = 2.085,
2747+ texname = '\\text{WW}',
2748+ lhablock = 'DECAY',
2749+ lhacode = [ 24 ])
2750+
2751+WH = Parameter(name = 'WH',
2752+ nature = 'external',
2753+ type = 'real',
2754+ value = 0.00575308848,
2755+ texname = '\\text{WH}',
2756+ lhablock = 'DECAY',
2757+ lhacode = [ 25 ])
2758+
2759+aEW = Parameter(name = 'aEW',
2760+ nature = 'internal',
2761+ type = 'real',
2762+ value = '1/aEWM1',
2763+ texname = '\\text{aEW}')
2764+
2765+G = Parameter(name = 'G',
2766+ nature = 'internal',
2767+ type = 'real',
2768+ value = '2*cmath.sqrt(aS)*cmath.sqrt(cmath.pi)',
2769+ texname = 'G')
2770+
2771+CKM11 = Parameter(name = 'CKM11',
2772+ nature = 'internal',
2773+ type = 'complex',
2774+ value = 'cmath.cos(cabi)',
2775+ texname = '\\text{CKM11}')
2776+
2777+CKM12 = Parameter(name = 'CKM12',
2778+ nature = 'internal',
2779+ type = 'complex',
2780+ value = 'cmath.sin(cabi)',
2781+ texname = '\\text{CKM12}')
2782+
2783+CKM13 = Parameter(name = 'CKM13',
2784+ nature = 'internal',
2785+ type = 'complex',
2786+ value = '0',
2787+ texname = '\\text{CKM13}')
2788+
2789+CKM21 = Parameter(name = 'CKM21',
2790+ nature = 'internal',
2791+ type = 'complex',
2792+ value = '-cmath.sin(cabi)',
2793+ texname = '\\text{CKM21}')
2794+
2795+CKM22 = Parameter(name = 'CKM22',
2796+ nature = 'internal',
2797+ type = 'complex',
2798+ value = 'cmath.cos(cabi)',
2799+ texname = '\\text{CKM22}')
2800+
2801+CKM23 = Parameter(name = 'CKM23',
2802+ nature = 'internal',
2803+ type = 'complex',
2804+ value = '0',
2805+ texname = '\\text{CKM23}')
2806+
2807+CKM31 = Parameter(name = 'CKM31',
2808+ nature = 'internal',
2809+ type = 'complex',
2810+ value = '0',
2811+ texname = '\\text{CKM31}')
2812+
2813+CKM32 = Parameter(name = 'CKM32',
2814+ nature = 'internal',
2815+ type = 'complex',
2816+ value = '0',
2817+ texname = '\\text{CKM32}')
2818+
2819+CKM33 = Parameter(name = 'CKM33',
2820+ nature = 'internal',
2821+ type = 'complex',
2822+ value = '1',
2823+ texname = '\\text{CKM33}')
2824+
2825+C3phiq = Parameter(name = 'C3phiq',
2826+ nature = 'internal',
2827+ type = 'complex',
2828+ value = 'complex(0,1)*IC3phiq + RC3phiq',
2829+ texname = 'C_{\\text{$\\phi $q}}^{\\text{(3)}}')
2830+
2831+CtW = Parameter(name = 'CtW',
2832+ nature = 'internal',
2833+ type = 'complex',
2834+ value = 'complex(0,1)*ICtW + RCtW',
2835+ texname = 'C_{\\text{tW}}')
2836+
2837+CtG = Parameter(name = 'CtG',
2838+ nature = 'internal',
2839+ type = 'complex',
2840+ value = 'complex(0,1)*ICtG + RCtG',
2841+ texname = 'C_{\\text{tG}}')
2842+
2843+MTri = Parameter(name = 'MTri',
2844+ nature = 'internal',
2845+ type = 'real',
2846+ value = 'K*Lambda',
2847+ texname = 'M_{\\text{Tri}}')
2848+
2849+MTri8 = Parameter(name = 'MTri8',
2850+ nature = 'internal',
2851+ type = 'real',
2852+ value = 'K1*Lambda',
2853+ texname = 'M_{\\text{Tri8}}')
2854+
2855+M8t = Parameter(name = 'M8t',
2856+ nature = 'internal',
2857+ type = 'real',
2858+ value = 'K2*Lambda',
2859+ texname = 'M_{8 t}')
2860+
2861+M8Q = Parameter(name = 'M8Q',
2862+ nature = 'internal',
2863+ type = 'real',
2864+ value = 'K3*Lambda',
2865+ texname = 'M_{8 Q}')
2866+
2867+gT = Parameter(name = 'gT',
2868+ nature = 'internal',
2869+ type = 'real',
2870+ value = '-(K*cmath.sqrt(C13qq))',
2871+ texname = 'g_T')
2872+
2873+gTl = Parameter(name = 'gTl',
2874+ nature = 'internal',
2875+ type = 'real',
2876+ value = 'K*cmath.sqrt(C13qq)',
2877+ texname = 'g_{\\text{Tl}}')
2878+
2879+gT8 = Parameter(name = 'gT8',
2880+ nature = 'internal',
2881+ type = 'real',
2882+ value = '-(K1*cmath.sqrt(C83qq))',
2883+ texname = 'g_{\\text{T8}}')
2884+
2885+gT8l = Parameter(name = 'gT8l',
2886+ nature = 'internal',
2887+ type = 'real',
2888+ value = 'K1*cmath.sqrt(C83qq)',
2889+ texname = 'g_{\\text{T8l}}')
2890+
2891+g8t = Parameter(name = 'g8t',
2892+ nature = 'internal',
2893+ type = 'real',
2894+ value = '-K2',
2895+ texname = 'g_{8 t}')
2896+
2897+g8tu = Parameter(name = 'g8tu',
2898+ nature = 'internal',
2899+ type = 'real',
2900+ value = 'C8ut*K2',
2901+ texname = 'g_{8 \\text{tu}}')
2902+
2903+g8td = Parameter(name = 'g8td',
2904+ nature = 'internal',
2905+ type = 'real',
2906+ value = 'C8dt*K2',
2907+ texname = 'g_{8 \\text{td}}')
2908+
2909+g8tq = Parameter(name = 'g8tq',
2910+ nature = 'internal',
2911+ type = 'real',
2912+ value = 'C1qt*K2',
2913+ texname = 'g_{8 \\text{tq}}')
2914+
2915+g8Q = Parameter(name = 'g8Q',
2916+ nature = 'internal',
2917+ type = 'real',
2918+ value = '-K3',
2919+ texname = 'g_{8 Q}')
2920+
2921+g8Qu = Parameter(name = 'g8Qu',
2922+ nature = 'internal',
2923+ type = 'real',
2924+ value = 'C1qu*K3',
2925+ texname = 'g_{8 \\text{Qu}}')
2926+
2927+g8Qd = Parameter(name = 'g8Qd',
2928+ nature = 'internal',
2929+ type = 'real',
2930+ value = 'C1qd*K3',
2931+ texname = 'g_{8 \\text{Qd}}')
2932+
2933+g8Qq = Parameter(name = 'g8Qq',
2934+ nature = 'internal',
2935+ type = 'real',
2936+ value = 'C81qq*K3',
2937+ texname = 'g_{8 \\text{Qq}}')
2938+
2939+MW = Parameter(name = 'MW',
2940+ nature = 'internal',
2941+ type = 'real',
2942+ value = 'cmath.sqrt(MZ**2/2. + cmath.sqrt(MZ**4/4. - (aEW*cmath.pi*MZ**2)/(Gf*cmath.sqrt(2))))',
2943+ texname = 'M_W')
2944+
2945+ee = Parameter(name = 'ee',
2946+ nature = 'internal',
2947+ type = 'real',
2948+ value = '2*cmath.sqrt(aEW)*cmath.sqrt(cmath.pi)',
2949+ texname = 'e')
2950+
2951+sw2 = Parameter(name = 'sw2',
2952+ nature = 'internal',
2953+ type = 'real',
2954+ value = '1 - MW**2/MZ**2',
2955+ texname = '\\text{sw2}')
2956+
2957+cw = Parameter(name = 'cw',
2958+ nature = 'internal',
2959+ type = 'real',
2960+ value = 'cmath.sqrt(1 - sw2)',
2961+ texname = 'c_w')
2962+
2963+sw = Parameter(name = 'sw',
2964+ nature = 'internal',
2965+ type = 'real',
2966+ value = 'cmath.sqrt(sw2)',
2967+ texname = 's_w')
2968+
2969+g1 = Parameter(name = 'g1',
2970+ nature = 'internal',
2971+ type = 'real',
2972+ value = 'ee/cw',
2973+ texname = 'g_1')
2974+
2975+gw = Parameter(name = 'gw',
2976+ nature = 'internal',
2977+ type = 'real',
2978+ value = 'ee/sw',
2979+ texname = 'g_w')
2980+
2981+v = Parameter(name = 'v',
2982+ nature = 'internal',
2983+ type = 'real',
2984+ value = '(2*MW*sw)/ee',
2985+ texname = 'v')
2986+
2987+lam = Parameter(name = 'lam',
2988+ nature = 'internal',
2989+ type = 'real',
2990+ value = 'MH**2/(2.*v**2)',
2991+ texname = '\\text{lam}')
2992+
2993+yb = Parameter(name = 'yb',
2994+ nature = 'internal',
2995+ type = 'real',
2996+ value = '(ymb*cmath.sqrt(2))/v',
2997+ texname = '\\text{yb}')
2998+
2999+yc = Parameter(name = 'yc',
3000+ nature = 'internal',
3001+ type = 'real',
3002+ value = '(ymc*cmath.sqrt(2))/v',
3003+ texname = '\\text{yc}')
3004+
3005+ydo = Parameter(name = 'ydo',
3006+ nature = 'internal',
3007+ type = 'real',
3008+ value = '(ymdo*cmath.sqrt(2))/v',
3009+ texname = '\\text{ydo}')
3010+
3011+ye = Parameter(name = 'ye',
3012+ nature = 'internal',
3013+ type = 'real',
3014+ value = '(yme*cmath.sqrt(2))/v',
3015+ texname = '\\text{ye}')
3016+
3017+ym = Parameter(name = 'ym',
3018+ nature = 'internal',
3019+ type = 'real',
3020+ value = '(ymm*cmath.sqrt(2))/v',
3021+ texname = '\\text{ym}')
3022+
3023+ys = Parameter(name = 'ys',
3024+ nature = 'internal',
3025+ type = 'real',
3026+ value = '(yms*cmath.sqrt(2))/v',
3027+ texname = '\\text{ys}')
3028+
3029+yt = Parameter(name = 'yt',
3030+ nature = 'internal',
3031+ type = 'real',
3032+ value = '(ymt*cmath.sqrt(2))/v',
3033+ texname = '\\text{yt}')
3034+
3035+ytau = Parameter(name = 'ytau',
3036+ nature = 'internal',
3037+ type = 'real',
3038+ value = '(ymtau*cmath.sqrt(2))/v',
3039+ texname = '\\text{ytau}')
3040+
3041+yup = Parameter(name = 'yup',
3042+ nature = 'internal',
3043+ type = 'real',
3044+ value = '(ymup*cmath.sqrt(2))/v',
3045+ texname = '\\text{yup}')
3046+
3047+muH = Parameter(name = 'muH',
3048+ nature = 'internal',
3049+ type = 'real',
3050+ value = 'cmath.sqrt(lam*v**2)',
3051+ texname = '\\mu ')
3052+
3053
3054=== added file 'models/TopEffTh/particles.py'
3055--- models/TopEffTh/particles.py 1970-01-01 00:00:00 +0000
3056+++ models/TopEffTh/particles.py 2011-10-12 10:39:26 +0000
3057@@ -0,0 +1,449 @@
3058+# This file was automatically created by FeynRules $Revision: 821 $
3059+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
3060+# Date: Mon 3 Oct 2011 13:27:06
3061+
3062+
3063+from __future__ import division
3064+from object_library import all_particles, Particle
3065+import parameters as Param
3066+
3067+ve = Particle(pdg_code = 12,
3068+ name = 've',
3069+ antiname = 've~',
3070+ spin = 2,
3071+ color = 1,
3072+ mass = Param.ZERO,
3073+ width = Param.ZERO,
3074+ texname = 've',
3075+ antitexname = 've',
3076+ charge = 0,
3077+ LeptonNumber = 1,
3078+ GhostNumber = 0)
3079+
3080+ve__tilde__ = ve.anti()
3081+
3082+vm = Particle(pdg_code = 14,
3083+ name = 'vm',
3084+ antiname = 'vm~',
3085+ spin = 2,
3086+ color = 1,
3087+ mass = Param.ZERO,
3088+ width = Param.ZERO,
3089+ texname = 'vm',
3090+ antitexname = 'vm',
3091+ charge = 0,
3092+ LeptonNumber = 1,
3093+ GhostNumber = 0)
3094+
3095+vm__tilde__ = vm.anti()
3096+
3097+vt = Particle(pdg_code = 16,
3098+ name = 'vt',
3099+ antiname = 'vt~',
3100+ spin = 2,
3101+ color = 1,
3102+ mass = Param.ZERO,
3103+ width = Param.ZERO,
3104+ texname = 'vt',
3105+ antitexname = 'vt',
3106+ charge = 0,
3107+ LeptonNumber = 1,
3108+ GhostNumber = 0)
3109+
3110+vt__tilde__ = vt.anti()
3111+
3112+e__minus__ = Particle(pdg_code = 11,
3113+ name = 'e-',
3114+ antiname = 'e+',
3115+ spin = 2,
3116+ color = 1,
3117+ mass = Param.Me,
3118+ width = Param.ZERO,
3119+ texname = 'e-',
3120+ antitexname = 'e-',
3121+ charge = -1,
3122+ LeptonNumber = 1,
3123+ GhostNumber = 0)
3124+
3125+e__plus__ = e__minus__.anti()
3126+
3127+m__minus__ = Particle(pdg_code = 13,
3128+ name = 'm-',
3129+ antiname = 'm+',
3130+ spin = 2,
3131+ color = 1,
3132+ mass = Param.MM,
3133+ width = Param.ZERO,
3134+ texname = 'm-',
3135+ antitexname = 'm-',
3136+ charge = -1,
3137+ LeptonNumber = 1,
3138+ GhostNumber = 0)
3139+
3140+m__plus__ = m__minus__.anti()
3141+
3142+tt__minus__ = Particle(pdg_code = 15,
3143+ name = 'tt-',
3144+ antiname = 'tt+',
3145+ spin = 2,
3146+ color = 1,
3147+ mass = Param.MTA,
3148+ width = Param.ZERO,
3149+ texname = 'tt-',
3150+ antitexname = 'tt-',
3151+ charge = -1,
3152+ LeptonNumber = 1,
3153+ GhostNumber = 0)
3154+
3155+tt__plus__ = tt__minus__.anti()
3156+
3157+u = Particle(pdg_code = 2,
3158+ name = 'u',
3159+ antiname = 'u~',
3160+ spin = 2,
3161+ color = 3,
3162+ mass = Param.MU,
3163+ width = Param.ZERO,
3164+ texname = 'u',
3165+ antitexname = 'u',
3166+ charge = 2/3,
3167+ LeptonNumber = 0,
3168+ GhostNumber = 0)
3169+
3170+u__tilde__ = u.anti()
3171+
3172+c = Particle(pdg_code = 4,
3173+ name = 'c',
3174+ antiname = 'c~',
3175+ spin = 2,
3176+ color = 3,
3177+ mass = Param.MC,
3178+ width = Param.ZERO,
3179+ texname = 'c',
3180+ antitexname = 'c',
3181+ charge = 2/3,
3182+ LeptonNumber = 0,
3183+ GhostNumber = 0)
3184+
3185+c__tilde__ = c.anti()
3186+
3187+t = Particle(pdg_code = 6,
3188+ name = 't',
3189+ antiname = 't~',
3190+ spin = 2,
3191+ color = 3,
3192+ mass = Param.MT,
3193+ width = Param.WT,
3194+ texname = 't',
3195+ antitexname = 't',
3196+ charge = 2/3,
3197+ LeptonNumber = 0,
3198+ GhostNumber = 0)
3199+
3200+t__tilde__ = t.anti()
3201+
3202+d = Particle(pdg_code = 1,
3203+ name = 'd',
3204+ antiname = 'd~',
3205+ spin = 2,
3206+ color = 3,
3207+ mass = Param.MD,
3208+ width = Param.ZERO,
3209+ texname = 'd',
3210+ antitexname = 'd',
3211+ charge = -1/3,
3212+ LeptonNumber = 0,
3213+ GhostNumber = 0)
3214+
3215+d__tilde__ = d.anti()
3216+
3217+s = Particle(pdg_code = 3,
3218+ name = 's',
3219+ antiname = 's~',
3220+ spin = 2,
3221+ color = 3,
3222+ mass = Param.MS,
3223+ width = Param.ZERO,
3224+ texname = 's',
3225+ antitexname = 's',
3226+ charge = -1/3,
3227+ LeptonNumber = 0,
3228+ GhostNumber = 0)
3229+
3230+s__tilde__ = s.anti()
3231+
3232+b = Particle(pdg_code = 5,
3233+ name = 'b',
3234+ antiname = 'b~',
3235+ spin = 2,
3236+ color = 3,
3237+ mass = Param.MB,
3238+ width = Param.ZERO,
3239+ texname = 'b',
3240+ antitexname = 'b',
3241+ charge = -1/3,
3242+ LeptonNumber = 0,
3243+ GhostNumber = 0)
3244+
3245+b__tilde__ = b.anti()
3246+
3247+ghA = Particle(pdg_code = 9000001,
3248+ name = 'ghA',
3249+ antiname = 'ghA~',
3250+ spin = -1,
3251+ color = 1,
3252+ mass = Param.ZERO,
3253+ width = Param.ZERO,
3254+ texname = 'ghA',
3255+ antitexname = 'ghA',
3256+ charge = 0,
3257+ LeptonNumber = 0,
3258+ GhostNumber = 1)
3259+
3260+ghA__tilde__ = ghA.anti()
3261+
3262+ghZ = Particle(pdg_code = 9000002,
3263+ name = 'ghZ',
3264+ antiname = 'ghZ~',
3265+ spin = -1,
3266+ color = 1,
3267+ mass = Param.MZ,
3268+ width = Param.ZERO,
3269+ texname = 'ghZ',
3270+ antitexname = 'ghZ',
3271+ charge = 0,
3272+ LeptonNumber = 0,
3273+ GhostNumber = 1)
3274+
3275+ghZ__tilde__ = ghZ.anti()
3276+
3277+ghWp = Particle(pdg_code = 9000003,
3278+ name = 'ghWp',
3279+ antiname = 'ghWp~',
3280+ spin = -1,
3281+ color = 1,
3282+ mass = Param.MW,
3283+ width = Param.ZERO,
3284+ texname = 'ghWp',
3285+ antitexname = 'ghWp',
3286+ charge = 1,
3287+ LeptonNumber = 0,
3288+ GhostNumber = 1)
3289+
3290+ghWp__tilde__ = ghWp.anti()
3291+
3292+ghWm = Particle(pdg_code = 9000004,
3293+ name = 'ghWm',
3294+ antiname = 'ghWm~',
3295+ spin = -1,
3296+ color = 1,
3297+ mass = Param.MW,
3298+ width = Param.ZERO,
3299+ texname = 'ghWm',
3300+ antitexname = 'ghWm',
3301+ charge = -1,
3302+ LeptonNumber = 0,
3303+ GhostNumber = 1)
3304+
3305+ghWm__tilde__ = ghWm.anti()
3306+
3307+ghG = Particle(pdg_code = 9000005,
3308+ name = 'ghG',
3309+ antiname = 'ghG~',
3310+ spin = -1,
3311+ color = 8,
3312+ mass = Param.ZERO,
3313+ width = Param.ZERO,
3314+ texname = 'ghG',
3315+ antitexname = 'ghG',
3316+ charge = 0,
3317+ LeptonNumber = 0,
3318+ GhostNumber = 1)
3319+
3320+ghG__tilde__ = ghG.anti()
3321+
3322+A = Particle(pdg_code = 22,
3323+ name = 'A',
3324+ antiname = 'A',
3325+ spin = 3,
3326+ color = 1,
3327+ mass = Param.ZERO,
3328+ width = Param.ZERO,
3329+ texname = 'A',
3330+ antitexname = 'A',
3331+ charge = 0,
3332+ LeptonNumber = 0,
3333+ GhostNumber = 0)
3334+
3335+Z = Particle(pdg_code = 23,
3336+ name = 'Z',
3337+ antiname = 'Z',
3338+ spin = 3,
3339+ color = 1,
3340+ mass = Param.MZ,
3341+ width = Param.WZ,
3342+ texname = 'Z',
3343+ antitexname = 'Z',
3344+ charge = 0,
3345+ LeptonNumber = 0,
3346+ GhostNumber = 0)
3347+
3348+W__plus__ = Particle(pdg_code = 24,
3349+ name = 'W+',
3350+ antiname = 'W-',
3351+ spin = 3,
3352+ color = 1,
3353+ mass = Param.MW,
3354+ width = Param.WW,
3355+ texname = 'W+',
3356+ antitexname = 'W+',
3357+ charge = 1,
3358+ LeptonNumber = 0,
3359+ GhostNumber = 0)
3360+
3361+W__minus__ = W__plus__.anti()
3362+
3363+G = Particle(pdg_code = 21,
3364+ name = 'G',
3365+ antiname = 'G',
3366+ spin = 3,
3367+ color = 8,
3368+ mass = Param.ZERO,
3369+ width = Param.ZERO,
3370+ texname = 'G',
3371+ antitexname = 'G',
3372+ charge = 0,
3373+ LeptonNumber = 0,
3374+ GhostNumber = 0)
3375+
3376+H = Particle(pdg_code = 25,
3377+ name = 'H',
3378+ antiname = 'H',
3379+ spin = 1,
3380+ color = 1,
3381+ mass = Param.MH,
3382+ width = Param.WH,
3383+ texname = '\\phi',
3384+ antitexname = '\\phi',
3385+ charge = 0,
3386+ LeptonNumber = 0,
3387+ GhostNumber = 0)
3388+
3389+phi0 = Particle(pdg_code = 250,
3390+ name = 'phi0',
3391+ antiname = 'phi0',
3392+ spin = 1,
3393+ color = 1,
3394+ mass = Param.MZ,
3395+ width = Param.ZERO,
3396+ texname = 'phi0',
3397+ antitexname = 'phi0',
3398+ GoldstoneBoson = True,
3399+ charge = 0,
3400+ LeptonNumber = 0,
3401+ GhostNumber = 0)
3402+
3403+phi__plus__ = Particle(pdg_code = 251,
3404+ name = 'phi+',
3405+ antiname = 'phi-',
3406+ spin = 1,
3407+ color = 1,
3408+ mass = Param.MW,
3409+ width = Param.ZERO,
3410+ texname = '\\phi^+',
3411+ antitexname = '\\phi^+',
3412+ GoldstoneBoson = True,
3413+ charge = 1,
3414+ LeptonNumber = 0,
3415+ GhostNumber = 0)
3416+
3417+phi__minus__ = phi__plus__.anti()
3418+
3419+Tri0 = Particle(pdg_code = 9000006,
3420+ name = 'Tri0',
3421+ antiname = 'Tri0',
3422+ spin = 3,
3423+ color = 1,
3424+ mass = Param.MTri,
3425+ width = Param.ZERO,
3426+ texname = 'Tri0',
3427+ antitexname = 'Tri0',
3428+ charge = 0,
3429+ LeptonNumber = 0,
3430+ GhostNumber = 0,
3431+ propagating=False)
3432+
3433+Tri = Particle(pdg_code = 9000007,
3434+ name = 'Tri',
3435+ antiname = 'Tri~',
3436+ spin = 3,
3437+ color = 1,
3438+ mass = Param.MTri,
3439+ width = Param.ZERO,
3440+ texname = 'Tri',
3441+ antitexname = 'Tri',
3442+ charge = 1,
3443+ LeptonNumber = 0,
3444+ GhostNumber = 0,
3445+ propagating=False)
3446+
3447+Tri__tilde__ = Tri.anti()
3448+
3449+Tri80 = Particle(pdg_code = 9000008,
3450+ name = 'Tri80',
3451+ antiname = 'Tri80',
3452+ spin = 3,
3453+ color = 8,
3454+ mass = Param.MTri8,
3455+ width = Param.ZERO,
3456+ texname = 'Tri80',
3457+ antitexname = 'Tri80',
3458+ charge = 0,
3459+ LeptonNumber = 0,
3460+ GhostNumber = 0,
3461+ propagating=False)
3462+
3463+Tri8 = Particle(pdg_code = 9000009,
3464+ name = 'Tri8',
3465+ antiname = 'Tri8~',
3466+ spin = 3,
3467+ color = 8,
3468+ mass = Param.MTri8,
3469+ width = Param.ZERO,
3470+ texname = 'Tri8',
3471+ antitexname = 'Tri8',
3472+ charge = 1,
3473+ LeptonNumber = 0,
3474+ GhostNumber = 0,
3475+ propagating=False)
3476+
3477+Tri8__tilde__ = Tri8.anti()
3478+
3479+V8t = Particle(pdg_code = 9000010,
3480+ name = 'V8t',
3481+ antiname = 'V8t',
3482+ spin = 3,
3483+ color = 8,
3484+ mass = Param.M8t,
3485+ width = Param.ZERO,
3486+ texname = 'V8t',
3487+ antitexname = 'V8t',
3488+ charge = 0,
3489+ LeptonNumber = 0,
3490+ GhostNumber = 0,
3491+ propagating=False)
3492+
3493+V8Q = Particle(pdg_code = 9000011,
3494+ name = 'V8Q',
3495+ antiname = 'V8Q',
3496+ spin = 3,
3497+ color = 8,
3498+ mass = Param.M8Q,
3499+ width = Param.ZERO,
3500+ texname = 'V8Q',
3501+ antitexname = 'V8Q',
3502+ charge = 0,
3503+ LeptonNumber = 0,
3504+ GhostNumber = 0,
3505+ propagating=False)
3506+
3507
3508=== added file 'models/TopEffTh/vertices.py'
3509--- models/TopEffTh/vertices.py 1970-01-01 00:00:00 +0000
3510+++ models/TopEffTh/vertices.py 2011-10-12 10:39:26 +0000
3511@@ -0,0 +1,863 @@
3512+# This file was automatically created by FeynRules $Revision: 821 $
3513+# Mathematica version: 7.0 for Microsoft Windows (32-bit) (February 18, 2009)
3514+# Date: Mon 3 Oct 2011 13:27:06
3515+
3516+
3517+from object_library import all_vertices, Vertex
3518+import particles as P
3519+import couplings as C
3520+import lorentz as L
3521+
3522+
3523+V_1 = Vertex(name = 'V_1',
3524+ particles = [ P.H, P.H, P.H, P.H ],
3525+ color = [ '1' ],
3526+ lorentz = [ L.SSSS1 ],
3527+ couplings = {(0,0):C.GC_30})
3528+
3529+V_2 = Vertex(name = 'V_2',
3530+ particles = [ P.H, P.H, P.H ],
3531+ color = [ '1' ],
3532+ lorentz = [ L.SSS1 ],
3533+ couplings = {(0,0):C.GC_69})
3534+
3535+V_3 = Vertex(name = 'V_3',
3536+ particles = [ P.G, P.G, P.H, P.H ],
3537+ color = [ 'Identity(1,2)' ],
3538+ lorentz = [ L.VVSS2 ],
3539+ couplings = {(0,0):C.GC_32})
3540+
3541+V_4 = Vertex(name = 'V_4',
3542+ particles = [ P.G, P.G, P.H ],
3543+ color = [ 'Identity(1,2)' ],
3544+ lorentz = [ L.VVS2 ],
3545+ couplings = {(0,0):C.GC_70})
3546+
3547+V_5 = Vertex(name = 'V_5',
3548+ particles = [ P.ghG, P.ghG__tilde__, P.G ],
3549+ color = [ 'f(3,1,2)' ],
3550+ lorentz = [ L.UUV1 ],
3551+ couplings = {(0,0):C.GC_4})
3552+
3553+V_6 = Vertex(name = 'V_6',
3554+ particles = [ P.G, P.G, P.G ],
3555+ color = [ 'f(1,2,3)' ],
3556+ lorentz = [ L.VVV1, L.VVV2 ],
3557+ couplings = {(0,1):C.GC_31,(0,0):C.GC_4})
3558+
3559+V_7 = Vertex(name = 'V_7',
3560+ particles = [ P.G, P.G, P.G, P.G ],
3561+ 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)' ],
3562+ lorentz = [ L.VVVV1, L.VVVV2, L.VVVV4, L.VVVV5, L.VVVV7, L.VVVV8 ],
3563+ couplings = {(0,1):C.GC_36,(1,5):C.GC_36,(2,4):C.GC_36,(1,2):C.GC_6,(0,0):C.GC_6,(2,3):C.GC_6})
3564+
3565+V_8 = Vertex(name = 'V_8',
3566+ particles = [ P.G, P.G, P.G, P.H, P.H ],
3567+ color = [ 'f(1,2,3)' ],
3568+ lorentz = [ L.VVVSS1 ],
3569+ couplings = {(0,0):C.GC_37})
3570+
3571+V_9 = Vertex(name = 'V_9',
3572+ particles = [ P.G, P.G, P.G, P.H ],
3573+ color = [ 'f(1,2,3)' ],
3574+ lorentz = [ L.VVVS1 ],
3575+ couplings = {(0,0):C.GC_74})
3576+
3577+V_10 = Vertex(name = 'V_10',
3578+ particles = [ P.G, P.G, P.G, P.G, P.H, P.H ],
3579+ 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)' ],
3580+ lorentz = [ L.VVVVSS1, L.VVVVSS2, L.VVVVSS3 ],
3581+ couplings = {(1,1):C.GC_41,(0,0):C.GC_41,(2,2):C.GC_41})
3582+
3583+V_11 = Vertex(name = 'V_11',
3584+ particles = [ P.G, P.G, P.G, P.G, P.H ],
3585+ 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)' ],
3586+ lorentz = [ L.VVVVS1, L.VVVVS2, L.VVVVS3 ],
3587+ couplings = {(1,1):C.GC_76,(0,0):C.GC_76,(2,2):C.GC_76})
3588+
3589+V_12 = Vertex(name = 'V_12',
3590+ particles = [ P.G, P.G, P.G, P.G, P.G ],
3591+ color = [ 'f(-1,1,-2)*f(2,3,-1)*f(4,5,-2)', 'f(-1,1,-2)*f(2,3,-2)*f(4,5,-1)', 'f(-1,1,-2)*f(2,4,-1)*f(3,5,-2)', 'f(-1,1,-2)*f(2,4,-2)*f(3,5,-1)', 'f(-1,1,-2)*f(2,5,-1)*f(3,4,-2)', 'f(-1,1,-2)*f(2,5,-2)*f(3,4,-1)', 'f(-1,1,2)*f(3,-2,-1)*f(4,5,-2)', 'f(-1,1,2)*f(3,4,-2)*f(5,-2,-1)', 'f(-1,1,2)*f(3,5,-2)*f(4,-2,-1)', 'f(-1,1,3)*f(2,-2,-1)*f(4,5,-2)', 'f(-1,1,3)*f(2,4,-2)*f(5,-2,-1)', 'f(-1,1,3)*f(2,5,-2)*f(4,-2,-1)', 'f(-1,1,4)*f(2,-2,-1)*f(3,5,-2)', 'f(-1,1,4)*f(2,3,-2)*f(5,-2,-1)', 'f(-1,1,4)*f(2,5,-2)*f(3,-2,-1)', 'f(-1,1,5)*f(2,-2,-1)*f(3,4,-2)', 'f(-1,1,5)*f(2,3,-2)*f(4,-2,-1)', 'f(-1,1,5)*f(2,4,-2)*f(3,-2,-1)', 'f(-1,2,-2)*f(1,3,-2)*f(4,5,-1)', 'f(-1,2,-2)*f(1,4,-2)*f(3,5,-1)', 'f(-1,2,-2)*f(1,5,-2)*f(3,4,-1)', 'f(-1,2,3)*f(1,4,-2)*f(5,-2,-1)', 'f(-1,2,3)*f(1,5,-2)*f(4,-2,-1)', 'f(-1,2,4)*f(1,3,-2)*f(5,-2,-1)', 'f(-1,2,4)*f(1,5,-2)*f(3,-2,-1)', 'f(-1,2,5)*f(1,3,-2)*f(4,-2,-1)', 'f(-1,2,5)*f(1,4,-2)*f(3,-2,-1)', 'f(-1,3,-2)*f(1,2,-2)*f(4,5,-1)', 'f(-1,3,4)*f(1,2,-2)*f(5,-2,-1)', 'f(-1,3,5)*f(1,2,-2)*f(4,-2,-1)' ],
3592+ lorentz = [ L.VVVVV1, L.VVVVV10, L.VVVVV11, L.VVVVV12, L.VVVVV13, L.VVVVV14, L.VVVVV15, L.VVVVV16, L.VVVVV17, L.VVVVV18, L.VVVVV19, L.VVVVV2, L.VVVVV20, L.VVVVV21, L.VVVVV22, L.VVVVV23, L.VVVVV24, L.VVVVV25, L.VVVVV26, L.VVVVV27, L.VVVVV28, L.VVVVV29, L.VVVVV3, L.VVVVV30, L.VVVVV4, L.VVVVV5, L.VVVVV6, L.VVVVV7, L.VVVVV8, L.VVVVV9 ],
3593+ couplings = {(2,4):C.GC_39,(4,9):C.GC_40,(5,9):C.GC_39,(3,4):C.GC_40,(15,16):C.GC_39,(9,25):C.GC_39,(20,16):C.GC_40,(18,25):C.GC_40,(17,17):C.GC_39,(6,0):C.GC_39,(24,17):C.GC_40,(27,0):C.GC_40,(25,27):C.GC_39,(29,11):C.GC_39,(8,11):C.GC_40,(11,27):C.GC_40,(2,8):C.GC_40,(4,5):C.GC_39,(5,5):C.GC_40,(3,8):C.GC_39,(12,15):C.GC_39,(19,15):C.GC_40,(14,18):C.GC_39,(26,18):C.GC_40,(23,28):C.GC_39,(28,22):C.GC_39,(7,22):C.GC_40,(10,28):C.GC_40,(0,24):C.GC_39,(1,24):C.GC_40,(12,6):C.GC_39,(19,6):C.GC_40,(26,10):C.GC_39,(14,10):C.GC_40,(16,2):C.GC_39,(22,2):C.GC_40,(0,26):C.GC_40,(1,26):C.GC_39,(9,29):C.GC_39,(18,29):C.GC_40,(11,19):C.GC_39,(25,19):C.GC_40,(21,14):C.GC_39,(13,14):C.GC_40,(15,7):C.GC_39,(20,7):C.GC_40,(24,12):C.GC_39,(17,12):C.GC_40,(13,3):C.GC_39,(21,3):C.GC_40,(22,13):C.GC_39,(16,13):C.GC_40,(10,21):C.GC_39,(23,21):C.GC_40,(6,1):C.GC_39,(27,1):C.GC_40,(8,20):C.GC_39,(29,20):C.GC_40,(7,23):C.GC_39,(28,23):C.GC_40})
3594+
3595+V_13 = Vertex(name = 'V_13',
3596+ particles = [ P.G, P.G, P.G, P.G, P.G, P.G ],
3597+ color = [ 'f(-2,-3,-1)*f(-1,1,2)*f(3,4,-2)*f(5,6,-3)', 'f(-2,-3,-1)*f(-1,1,2)*f(3,4,-3)*f(5,6,-2)', 'f(-2,-3,-1)*f(-1,1,2)*f(3,5,-2)*f(4,6,-3)', 'f(-2,-3,-1)*f(-1,1,2)*f(3,5,-3)*f(4,6,-2)', 'f(-2,-3,-1)*f(-1,1,2)*f(3,6,-2)*f(4,5,-3)', 'f(-2,-3,-1)*f(-1,1,2)*f(3,6,-3)*f(4,5,-2)', 'f(-2,-3,-1)*f(-1,1,3)*f(2,4,-2)*f(5,6,-3)', 'f(-2,-3,-1)*f(-1,1,3)*f(2,4,-3)*f(5,6,-2)', 'f(-2,-3,-1)*f(-1,1,3)*f(2,5,-2)*f(4,6,-3)', 'f(-2,-3,-1)*f(-1,1,3)*f(2,5,-3)*f(4,6,-2)', 'f(-2,-3,-1)*f(-1,1,3)*f(2,6,-2)*f(4,5,-3)', 'f(-2,-3,-1)*f(-1,1,3)*f(2,6,-3)*f(4,5,-2)', 'f(-2,-3,-1)*f(-1,1,4)*f(2,3,-2)*f(5,6,-3)', 'f(-2,-3,-1)*f(-1,1,4)*f(2,3,-3)*f(5,6,-2)', 'f(-2,-3,-1)*f(-1,1,4)*f(2,5,-2)*f(3,6,-3)', 'f(-2,-3,-1)*f(-1,1,4)*f(2,5,-3)*f(3,6,-2)', 'f(-2,-3,-1)*f(-1,1,4)*f(2,6,-2)*f(3,5,-3)', 'f(-2,-3,-1)*f(-1,1,4)*f(2,6,-3)*f(3,5,-2)', 'f(-2,-3,-1)*f(-1,1,5)*f(2,3,-2)*f(4,6,-3)', 'f(-2,-3,-1)*f(-1,1,5)*f(2,3,-3)*f(4,6,-2)', 'f(-2,-3,-1)*f(-1,1,5)*f(2,4,-2)*f(3,6,-3)', 'f(-2,-3,-1)*f(-1,1,5)*f(2,4,-3)*f(3,6,-2)', 'f(-2,-3,-1)*f(-1,1,5)*f(2,6,-2)*f(3,4,-3)', 'f(-2,-3,-1)*f(-1,1,5)*f(2,6,-3)*f(3,4,-2)', 'f(-2,-3,-1)*f(-1,1,6)*f(2,3,-2)*f(4,5,-3)', 'f(-2,-3,-1)*f(-1,1,6)*f(2,3,-3)*f(4,5,-2)', 'f(-2,-3,-1)*f(-1,1,6)*f(2,4,-2)*f(3,5,-3)', 'f(-2,-3,-1)*f(-1,1,6)*f(2,4,-3)*f(3,5,-2)', 'f(-2,-3,-1)*f(-1,1,6)*f(2,5,-2)*f(3,4,-3)', 'f(-2,-3,-1)*f(-1,1,6)*f(2,5,-3)*f(3,4,-2)', 'f(-2,-3,-1)*f(-1,2,3)*f(1,4,-2)*f(5,6,-3)', 'f(-2,-3,-1)*f(-1,2,3)*f(1,4,-3)*f(5,6,-2)', 'f(-2,-3,-1)*f(-1,2,3)*f(1,5,-2)*f(4,6,-3)', 'f(-2,-3,-1)*f(-1,2,3)*f(1,5,-3)*f(4,6,-2)', 'f(-2,-3,-1)*f(-1,2,3)*f(1,6,-2)*f(4,5,-3)', 'f(-2,-3,-1)*f(-1,2,3)*f(1,6,-3)*f(4,5,-2)', 'f(-2,-3,-1)*f(-1,2,4)*f(1,3,-2)*f(5,6,-3)', 'f(-2,-3,-1)*f(-1,2,4)*f(1,3,-3)*f(5,6,-2)', 'f(-2,-3,-1)*f(-1,2,4)*f(1,5,-2)*f(3,6,-3)', 'f(-2,-3,-1)*f(-1,2,4)*f(1,5,-3)*f(3,6,-2)', 'f(-2,-3,-1)*f(-1,2,4)*f(1,6,-2)*f(3,5,-3)', 'f(-2,-3,-1)*f(-1,2,4)*f(1,6,-3)*f(3,5,-2)', 'f(-2,-3,-1)*f(-1,2,5)*f(1,3,-2)*f(4,6,-3)', 'f(-2,-3,-1)*f(-1,2,5)*f(1,3,-3)*f(4,6,-2)', 'f(-2,-3,-1)*f(-1,2,5)*f(1,4,-2)*f(3,6,-3)', 'f(-2,-3,-1)*f(-1,2,5)*f(1,4,-3)*f(3,6,-2)', 'f(-2,-3,-1)*f(-1,2,5)*f(1,6,-2)*f(3,4,-3)', 'f(-2,-3,-1)*f(-1,2,5)*f(1,6,-3)*f(3,4,-2)', 'f(-2,-3,-1)*f(-1,2,6)*f(1,3,-2)*f(4,5,-3)', 'f(-2,-3,-1)*f(-1,2,6)*f(1,3,-3)*f(4,5,-2)', 'f(-2,-3,-1)*f(-1,2,6)*f(1,4,-2)*f(3,5,-3)', 'f(-2,-3,-1)*f(-1,2,6)*f(1,4,-3)*f(3,5,-2)', 'f(-2,-3,-1)*f(-1,2,6)*f(1,5,-2)*f(3,4,-3)', 'f(-2,-3,-1)*f(-1,2,6)*f(1,5,-3)*f(3,4,-2)', 'f(-2,-3,-1)*f(-1,3,4)*f(1,2,-2)*f(5,6,-3)', 'f(-2,-3,-1)*f(-1,3,4)*f(1,2,-3)*f(5,6,-2)', 'f(-2,-3,-1)*f(-1,3,4)*f(1,5,-2)*f(2,6,-3)', 'f(-2,-3,-1)*f(-1,3,4)*f(1,5,-3)*f(2,6,-2)', 'f(-2,-3,-1)*f(-1,3,4)*f(1,6,-2)*f(2,5,-3)', 'f(-2,-3,-1)*f(-1,3,4)*f(1,6,-3)*f(2,5,-2)', 'f(-2,-3,-1)*f(-1,3,5)*f(1,2,-2)*f(4,6,-3)', 'f(-2,-3,-1)*f(-1,3,5)*f(1,2,-3)*f(4,6,-2)', 'f(-2,-3,-1)*f(-1,3,5)*f(1,4,-2)*f(2,6,-3)', 'f(-2,-3,-1)*f(-1,3,5)*f(1,4,-3)*f(2,6,-2)', 'f(-2,-3,-1)*f(-1,3,5)*f(1,6,-2)*f(2,4,-3)', 'f(-2,-3,-1)*f(-1,3,5)*f(1,6,-3)*f(2,4,-2)', 'f(-2,-3,-1)*f(-1,3,6)*f(1,2,-2)*f(4,5,-3)', 'f(-2,-3,-1)*f(-1,3,6)*f(1,2,-3)*f(4,5,-2)', 'f(-2,-3,-1)*f(-1,3,6)*f(1,4,-2)*f(2,5,-3)', 'f(-2,-3,-1)*f(-1,3,6)*f(1,4,-3)*f(2,5,-2)', 'f(-2,-3,-1)*f(-1,3,6)*f(1,5,-2)*f(2,4,-3)', 'f(-2,-3,-1)*f(-1,3,6)*f(1,5,-3)*f(2,4,-2)', 'f(-2,-3,-1)*f(-1,4,5)*f(1,2,-2)*f(3,6,-3)', 'f(-2,-3,-1)*f(-1,4,5)*f(1,2,-3)*f(3,6,-2)', 'f(-2,-3,-1)*f(-1,4,5)*f(1,3,-2)*f(2,6,-3)', 'f(-2,-3,-1)*f(-1,4,5)*f(1,3,-3)*f(2,6,-2)', 'f(-2,-3,-1)*f(-1,4,5)*f(1,6,-2)*f(2,3,-3)', 'f(-2,-3,-1)*f(-1,4,5)*f(1,6,-3)*f(2,3,-2)', 'f(-2,-3,-1)*f(-1,4,6)*f(1,2,-2)*f(3,5,-3)', 'f(-2,-3,-1)*f(-1,4,6)*f(1,2,-3)*f(3,5,-2)', 'f(-2,-3,-1)*f(-1,4,6)*f(1,3,-2)*f(2,5,-3)', 'f(-2,-3,-1)*f(-1,4,6)*f(1,3,-3)*f(2,5,-2)', 'f(-2,-3,-1)*f(-1,4,6)*f(1,5,-2)*f(2,3,-3)', 'f(-2,-3,-1)*f(-1,4,6)*f(1,5,-3)*f(2,3,-2)', 'f(-2,-3,-1)*f(-1,5,6)*f(1,2,-2)*f(3,4,-3)', 'f(-2,-3,-1)*f(-1,5,6)*f(1,2,-3)*f(3,4,-2)', 'f(-2,-3,-1)*f(-1,5,6)*f(1,3,-2)*f(2,4,-3)', 'f(-2,-3,-1)*f(-1,5,6)*f(1,3,-3)*f(2,4,-2)', 'f(-2,-3,-1)*f(-1,5,6)*f(1,4,-2)*f(2,3,-3)', 'f(-2,-3,-1)*f(-1,5,6)*f(1,4,-3)*f(2,3,-2)' ],
3598+ lorentz = [ L.VVVVVV1, L.VVVVVV10, L.VVVVVV11, L.VVVVVV12, L.VVVVVV13, L.VVVVVV14, L.VVVVVV15, L.VVVVVV2, L.VVVVVV3, L.VVVVVV4, L.VVVVVV5, L.VVVVVV6, L.VVVVVV7, L.VVVVVV8, L.VVVVVV9 ],
3599+ couplings = {(5,11):C.GC_42,(4,11):C.GC_43,(3,9):C.GC_43,(2,9):C.GC_42,(11,1):C.GC_43,(10,1):C.GC_42,(7,7):C.GC_43,(6,7):C.GC_42,(17,4):C.GC_43,(16,4):C.GC_42,(13,8):C.GC_43,(12,8):C.GC_42,(21,2):C.GC_42,(20,2):C.GC_43,(19,3):C.GC_42,(18,3):C.GC_43,(33,3):C.GC_43,(32,3):C.GC_42,(31,8):C.GC_42,(30,8):C.GC_43,(39,2):C.GC_43,(38,2):C.GC_42,(37,7):C.GC_42,(36,7):C.GC_43,(51,4):C.GC_42,(50,4):C.GC_43,(49,1):C.GC_42,(48,1):C.GC_43,(63,4):C.GC_43,(62,4):C.GC_42,(61,9):C.GC_42,(60,9):C.GC_43,(71,2):C.GC_42,(70,2):C.GC_43,(67,11):C.GC_43,(66,11):C.GC_42,(75,1):C.GC_43,(74,1):C.GC_42,(73,11):C.GC_42,(72,11):C.GC_43,(83,3):C.GC_42,(82,3):C.GC_43,(79,9):C.GC_43,(78,9):C.GC_42,(89,8):C.GC_43,(88,8):C.GC_42,(87,7):C.GC_43,(86,7):C.GC_42,(9,13):C.GC_43,(8,13):C.GC_42,(15,5):C.GC_43,(14,5):C.GC_42,(27,14):C.GC_42,(26,14):C.GC_43,(25,6):C.GC_42,(24,6):C.GC_43,(35,6):C.GC_43,(34,6):C.GC_42,(41,14):C.GC_43,(40,14):C.GC_42,(45,5):C.GC_42,(44,5):C.GC_43,(43,13):C.GC_42,(42,13):C.GC_43,(65,14):C.GC_42,(64,14):C.GC_43,(69,5):C.GC_43,(68,5):C.GC_42,(77,6):C.GC_42,(76,6):C.GC_43,(81,13):C.GC_43,(80,13):C.GC_42,(1,0):C.GC_43,(0,0):C.GC_42,(23,10):C.GC_43,(22,10):C.GC_42,(53,10):C.GC_42,(52,10):C.GC_43,(57,10):C.GC_43,(56,10):C.GC_42,(55,0):C.GC_42,(54,0):C.GC_43,(85,0):C.GC_43,(84,0):C.GC_42,(29,12):C.GC_42,(28,12):C.GC_43,(47,12):C.GC_43,(46,12):C.GC_42,(59,12):C.GC_42,(58,12):C.GC_43})
3600+
3601+V_14 = Vertex(name = 'V_14',
3602+ particles = [ P.A, P.W__minus__, P.W__plus__ ],
3603+ color = [ '1' ],
3604+ lorentz = [ L.VVV1 ],
3605+ couplings = {(0,0):C.GC_62})
3606+
3607+V_15 = Vertex(name = 'V_15',
3608+ particles = [ P.W__minus__, P.W__plus__, P.H, P.H ],
3609+ color = [ '1' ],
3610+ lorentz = [ L.VVSS1 ],
3611+ couplings = {(0,0):C.GC_46})
3612+
3613+V_16 = Vertex(name = 'V_16',
3614+ particles = [ P.W__minus__, P.W__plus__, P.H ],
3615+ color = [ '1' ],
3616+ lorentz = [ L.VVS1 ],
3617+ couplings = {(0,0):C.GC_79})
3618+
3619+V_17 = Vertex(name = 'V_17',
3620+ particles = [ P.A, P.A, P.W__minus__, P.W__plus__ ],
3621+ color = [ '1' ],
3622+ lorentz = [ L.VVVV3 ],
3623+ couplings = {(0,0):C.GC_66})
3624+
3625+V_18 = Vertex(name = 'V_18',
3626+ particles = [ P.W__minus__, P.W__plus__, P.Z ],
3627+ color = [ '1' ],
3628+ lorentz = [ L.VVV1 ],
3629+ couplings = {(0,0):C.GC_27})
3630+
3631+V_19 = Vertex(name = 'V_19',
3632+ particles = [ P.W__minus__, P.W__minus__, P.W__plus__, P.W__plus__ ],
3633+ color = [ '1' ],
3634+ lorentz = [ L.VVVV3 ],
3635+ couplings = {(0,0):C.GC_28})
3636+
3637+V_20 = Vertex(name = 'V_20',
3638+ particles = [ P.A, P.W__minus__, P.W__plus__, P.Z ],
3639+ color = [ '1' ],
3640+ lorentz = [ L.VVVV6 ],
3641+ couplings = {(0,0):C.GC_63})
3642+
3643+V_21 = Vertex(name = 'V_21',
3644+ particles = [ P.Z, P.Z, P.H, P.H ],
3645+ color = [ '1' ],
3646+ lorentz = [ L.VVSS1 ],
3647+ couplings = {(0,0):C.GC_68})
3648+
3649+V_22 = Vertex(name = 'V_22',
3650+ particles = [ P.Z, P.Z, P.H ],
3651+ color = [ '1' ],
3652+ lorentz = [ L.VVS1 ],
3653+ couplings = {(0,0):C.GC_84})
3654+
3655+V_23 = Vertex(name = 'V_23',
3656+ particles = [ P.W__minus__, P.W__plus__, P.Z, P.Z ],
3657+ color = [ '1' ],
3658+ lorentz = [ L.VVVV3 ],
3659+ couplings = {(0,0):C.GC_29})
3660+
3661+V_24 = Vertex(name = 'V_24',
3662+ particles = [ P.t__tilde__, P.b, P.W__plus__, P.H, P.H ],
3663+ color = [ 'Identity(1,2)' ],
3664+ lorentz = [ L.FFVSS1 ],
3665+ couplings = {(0,0):C.GC_94})
3666+
3667+V_25 = Vertex(name = 'V_25',
3668+ particles = [ P.t__tilde__, P.b, P.W__plus__, P.H ],
3669+ color = [ 'Identity(1,2)' ],
3670+ lorentz = [ L.FFVS1, L.FFVS3 ],
3671+ couplings = {(0,0):C.GC_95,(0,1):C.GC_34})
3672+
3673+V_26 = Vertex(name = 'V_26',
3674+ particles = [ P.t__tilde__, P.b, P.W__plus__ ],
3675+ color = [ 'Identity(1,2)' ],
3676+ lorentz = [ L.FFV2, L.FFV8 ],
3677+ couplings = {(0,0):[ C.GC_96, C.GC_115 ],(0,1):C.GC_72})
3678+
3679+V_27 = Vertex(name = 'V_27',
3680+ particles = [ P.b__tilde__, P.b, P.H, P.H ],
3681+ color = [ 'Identity(1,2)' ],
3682+ lorentz = [ L.FFSS1 ],
3683+ couplings = {(0,0):C.GC_98})
3684+
3685+V_28 = Vertex(name = 'V_28',
3686+ particles = [ P.b__tilde__, P.b, P.H ],
3687+ color = [ 'Identity(1,2)' ],
3688+ lorentz = [ L.FFS1, L.FFS2 ],
3689+ couplings = {(0,0):C.GC_85,(0,1):C.GC_102})
3690+
3691+V_29 = Vertex(name = 'V_29',
3692+ particles = [ P.b__tilde__, P.b, P.Z, P.H, P.H ],
3693+ color = [ 'Identity(1,2)' ],
3694+ lorentz = [ L.FFVSS1 ],
3695+ couplings = {(0,0):C.GC_99})
3696+
3697+V_30 = Vertex(name = 'V_30',
3698+ particles = [ P.b__tilde__, P.b, P.Z, P.H ],
3699+ color = [ 'Identity(1,2)' ],
3700+ lorentz = [ L.FFVS1 ],
3701+ couplings = {(0,0):C.GC_103})
3702+
3703+V_31 = Vertex(name = 'V_31',
3704+ particles = [ P.b__tilde__, P.b, P.Z ],
3705+ color = [ 'Identity(1,2)' ],
3706+ lorentz = [ L.FFV2, L.FFV5 ],
3707+ couplings = {(0,0):[ C.GC_57, C.GC_105 ],(0,1):C.GC_60})
3708+
3709+V_32 = Vertex(name = 'V_32',
3710+ particles = [ P.t__tilde__, P.t, P.H, P.H ],
3711+ color = [ 'Identity(1,2)' ],
3712+ lorentz = [ L.FFSS1 ],
3713+ couplings = {(0,0):C.GC_97})
3714+
3715+V_33 = Vertex(name = 'V_33',
3716+ particles = [ P.t__tilde__, P.t, P.H ],
3717+ color = [ 'Identity(1,2)' ],
3718+ lorentz = [ L.FFS1, L.FFS2 ],
3719+ couplings = {(0,0):C.GC_91,(0,1):C.GC_101})
3720+
3721+V_34 = Vertex(name = 'V_34',
3722+ particles = [ P.t__tilde__, P.t, P.Z, P.H, P.H ],
3723+ color = [ 'Identity(1,2)' ],
3724+ lorentz = [ L.FFVSS1 ],
3725+ couplings = {(0,0):C.GC_100})
3726+
3727+V_35 = Vertex(name = 'V_35',
3728+ particles = [ P.t__tilde__, P.t, P.Z, P.H ],
3729+ color = [ 'Identity(1,2)' ],
3730+ lorentz = [ L.FFVS1, L.FFVS2, L.FFVS3 ],
3731+ couplings = {(0,0):C.GC_104,(0,1):C.GC_121,(0,2):C.GC_35})
3732+
3733+V_36 = Vertex(name = 'V_36',
3734+ particles = [ P.t__tilde__, P.t, P.Z ],
3735+ color = [ 'Identity(1,2)' ],
3736+ lorentz = [ L.FFV2, L.FFV3, L.FFV7, L.FFV8 ],
3737+ couplings = {(0,0):[ C.GC_58, C.GC_106 ],(0,2):C.GC_60,(0,1):C.GC_127,(0,3):C.GC_73})
3738+
3739+V_37 = Vertex(name = 'V_37',
3740+ particles = [ P.b__tilde__, P.t, P.W__minus__, P.H, P.H ],
3741+ color = [ 'Identity(1,2)' ],
3742+ lorentz = [ L.FFVSS1 ],
3743+ couplings = {(0,0):C.GC_59})
3744+
3745+V_38 = Vertex(name = 'V_38',
3746+ particles = [ P.b__tilde__, P.t, P.W__minus__, P.H ],
3747+ color = [ 'Identity(1,2)' ],
3748+ lorentz = [ L.FFVS1, L.FFVS2 ],
3749+ couplings = {(0,0):C.GC_80,(0,1):C.GC_120})
3750+
3751+V_39 = Vertex(name = 'V_39',
3752+ particles = [ P.b__tilde__, P.t, P.W__minus__ ],
3753+ color = [ 'Identity(1,2)' ],
3754+ lorentz = [ L.FFV2, L.FFV3 ],
3755+ couplings = {(0,0):[ C.GC_56, C.GC_83 ],(0,1):C.GC_126})
3756+
3757+V_40 = Vertex(name = 'V_40',
3758+ particles = [ P.s__tilde__, P.c, P.Tri__tilde__ ],
3759+ color = [ 'Identity(1,2)' ],
3760+ lorentz = [ L.FFV2 ],
3761+ couplings = {(0,0):C.GC_26})
3762+
3763+V_41 = Vertex(name = 'V_41',
3764+ particles = [ P.d__tilde__, P.u, P.Tri__tilde__ ],
3765+ color = [ 'Identity(1,2)' ],
3766+ lorentz = [ L.FFV2 ],
3767+ couplings = {(0,0):C.GC_26})
3768+
3769+V_42 = Vertex(name = 'V_42',
3770+ particles = [ P.c__tilde__, P.c, P.Tri0 ],
3771+ color = [ 'Identity(1,2)' ],
3772+ lorentz = [ L.FFV2 ],
3773+ couplings = {(0,0):C.GC_25})
3774+
3775+V_43 = Vertex(name = 'V_43',
3776+ particles = [ P.d__tilde__, P.d, P.Tri0 ],
3777+ color = [ 'Identity(1,2)' ],
3778+ lorentz = [ L.FFV2 ],
3779+ couplings = {(0,0):C.GC_24})
3780+
3781+V_44 = Vertex(name = 'V_44',
3782+ particles = [ P.s__tilde__, P.s, P.Tri0 ],
3783+ color = [ 'Identity(1,2)' ],
3784+ lorentz = [ L.FFV2 ],
3785+ couplings = {(0,0):C.GC_24})
3786+
3787+V_45 = Vertex(name = 'V_45',
3788+ particles = [ P.u__tilde__, P.u, P.Tri0 ],
3789+ color = [ 'Identity(1,2)' ],
3790+ lorentz = [ L.FFV2 ],
3791+ couplings = {(0,0):C.GC_25})
3792+
3793+V_46 = Vertex(name = 'V_46',
3794+ particles = [ P.u__tilde__, P.d, P.Tri ],
3795+ color = [ 'Identity(1,2)' ],
3796+ lorentz = [ L.FFV2 ],
3797+ couplings = {(0,0):C.GC_26})
3798+
3799+V_47 = Vertex(name = 'V_47',
3800+ particles = [ P.c__tilde__, P.s, P.Tri ],
3801+ color = [ 'Identity(1,2)' ],
3802+ lorentz = [ L.FFV2 ],
3803+ couplings = {(0,0):C.GC_26})
3804+
3805+V_48 = Vertex(name = 'V_48',
3806+ particles = [ P.b__tilde__, P.t, P.Tri__tilde__ ],
3807+ color = [ 'Identity(1,2)' ],
3808+ lorentz = [ L.FFV2 ],
3809+ couplings = {(0,0):C.GC_17})
3810+
3811+V_49 = Vertex(name = 'V_49',
3812+ particles = [ P.b__tilde__, P.b, P.Tri0 ],
3813+ color = [ 'Identity(1,2)' ],
3814+ lorentz = [ L.FFV2 ],
3815+ couplings = {(0,0):C.GC_15})
3816+
3817+V_50 = Vertex(name = 'V_50',
3818+ particles = [ P.t__tilde__, P.t, P.Tri0 ],
3819+ color = [ 'Identity(1,2)' ],
3820+ lorentz = [ L.FFV2 ],
3821+ couplings = {(0,0):C.GC_16})
3822+
3823+V_51 = Vertex(name = 'V_51',
3824+ particles = [ P.t__tilde__, P.b, P.Tri ],
3825+ color = [ 'Identity(1,2)' ],
3826+ lorentz = [ L.FFV2 ],
3827+ couplings = {(0,0):C.GC_17})
3828+
3829+V_52 = Vertex(name = 'V_52',
3830+ particles = [ P.c__tilde__, P.c, P.V8t ],
3831+ color = [ 'T(3,2,1)' ],
3832+ lorentz = [ L.FFV2, L.FFV4 ],
3833+ couplings = {(0,0):C.GC_13,(0,1):C.GC_14})
3834+
3835+V_53 = Vertex(name = 'V_53',
3836+ particles = [ P.d__tilde__, P.d, P.V8t ],
3837+ color = [ 'T(3,2,1)' ],
3838+ lorentz = [ L.FFV2, L.FFV4 ],
3839+ couplings = {(0,0):C.GC_13,(0,1):C.GC_12})
3840+
3841+V_54 = Vertex(name = 'V_54',
3842+ particles = [ P.s__tilde__, P.s, P.V8t ],
3843+ color = [ 'T(3,2,1)' ],
3844+ lorentz = [ L.FFV2, L.FFV4 ],
3845+ couplings = {(0,0):C.GC_13,(0,1):C.GC_12})
3846+
3847+V_55 = Vertex(name = 'V_55',
3848+ particles = [ P.u__tilde__, P.u, P.V8t ],
3849+ color = [ 'T(3,2,1)' ],
3850+ lorentz = [ L.FFV2, L.FFV4 ],
3851+ couplings = {(0,0):C.GC_13,(0,1):C.GC_14})
3852+
3853+V_56 = Vertex(name = 'V_56',
3854+ particles = [ P.t__tilde__, P.t, P.V8t ],
3855+ color = [ 'T(3,2,1)' ],
3856+ lorentz = [ L.FFV4 ],
3857+ couplings = {(0,0):C.GC_11})
3858+
3859+V_57 = Vertex(name = 'V_57',
3860+ particles = [ P.b__tilde__, P.b, P.V8Q ],
3861+ color = [ 'T(3,2,1)' ],
3862+ lorentz = [ L.FFV2 ],
3863+ couplings = {(0,0):C.GC_7})
3864+
3865+V_58 = Vertex(name = 'V_58',
3866+ particles = [ P.c__tilde__, P.c, P.V8Q ],
3867+ color = [ 'T(3,2,1)' ],
3868+ lorentz = [ L.FFV2, L.FFV4 ],
3869+ couplings = {(0,0):C.GC_9,(0,1):C.GC_10})
3870+
3871+V_59 = Vertex(name = 'V_59',
3872+ particles = [ P.d__tilde__, P.d, P.V8Q ],
3873+ color = [ 'T(3,2,1)' ],
3874+ lorentz = [ L.FFV2, L.FFV4 ],
3875+ couplings = {(0,0):C.GC_9,(0,1):C.GC_8})
3876+
3877+V_60 = Vertex(name = 'V_60',
3878+ particles = [ P.s__tilde__, P.s, P.V8Q ],
3879+ color = [ 'T(3,2,1)' ],
3880+ lorentz = [ L.FFV2, L.FFV4 ],
3881+ couplings = {(0,0):C.GC_9,(0,1):C.GC_8})
3882+
3883+V_61 = Vertex(name = 'V_61',
3884+ particles = [ P.t__tilde__, P.t, P.V8Q ],
3885+ color = [ 'T(3,2,1)' ],
3886+ lorentz = [ L.FFV2 ],
3887+ couplings = {(0,0):C.GC_7})
3888+
3889+V_62 = Vertex(name = 'V_62',
3890+ particles = [ P.u__tilde__, P.u, P.V8Q ],
3891+ color = [ 'T(3,2,1)' ],
3892+ lorentz = [ L.FFV2, L.FFV4 ],
3893+ couplings = {(0,0):C.GC_9,(0,1):C.GC_10})
3894+
3895+V_63 = Vertex(name = 'V_63',
3896+ particles = [ P.s__tilde__, P.c, P.Tri8__tilde__ ],
3897+ color = [ 'T(3,2,1)' ],
3898+ lorentz = [ L.FFV2 ],
3899+ couplings = {(0,0):C.GC_23})
3900+
3901+V_64 = Vertex(name = 'V_64',
3902+ particles = [ P.d__tilde__, P.u, P.Tri8__tilde__ ],
3903+ color = [ 'T(3,2,1)' ],
3904+ lorentz = [ L.FFV2 ],
3905+ couplings = {(0,0):C.GC_23})
3906+
3907+V_65 = Vertex(name = 'V_65',
3908+ particles = [ P.c__tilde__, P.c, P.Tri80 ],
3909+ color = [ 'T(3,2,1)' ],
3910+ lorentz = [ L.FFV2 ],
3911+ couplings = {(0,0):C.GC_22})
3912+
3913+V_66 = Vertex(name = 'V_66',
3914+ particles = [ P.d__tilde__, P.d, P.Tri80 ],
3915+ color = [ 'T(3,2,1)' ],
3916+ lorentz = [ L.FFV2 ],
3917+ couplings = {(0,0):C.GC_21})
3918+
3919+V_67 = Vertex(name = 'V_67',
3920+ particles = [ P.s__tilde__, P.s, P.Tri80 ],
3921+ color = [ 'T(3,2,1)' ],
3922+ lorentz = [ L.FFV2 ],
3923+ couplings = {(0,0):C.GC_21})
3924+
3925+V_68 = Vertex(name = 'V_68',
3926+ particles = [ P.u__tilde__, P.u, P.Tri80 ],
3927+ color = [ 'T(3,2,1)' ],
3928+ lorentz = [ L.FFV2 ],
3929+ couplings = {(0,0):C.GC_22})
3930+
3931+V_69 = Vertex(name = 'V_69',
3932+ particles = [ P.u__tilde__, P.d, P.Tri8 ],
3933+ color = [ 'T(3,2,1)' ],
3934+ lorentz = [ L.FFV2 ],
3935+ couplings = {(0,0):C.GC_23})
3936+
3937+V_70 = Vertex(name = 'V_70',
3938+ particles = [ P.c__tilde__, P.s, P.Tri8 ],
3939+ color = [ 'T(3,2,1)' ],
3940+ lorentz = [ L.FFV2 ],
3941+ couplings = {(0,0):C.GC_23})
3942+
3943+V_71 = Vertex(name = 'V_71',
3944+ particles = [ P.b__tilde__, P.t, P.Tri8__tilde__ ],
3945+ color = [ 'T(3,2,1)' ],
3946+ lorentz = [ L.FFV2 ],
3947+ couplings = {(0,0):C.GC_20})
3948+
3949+V_72 = Vertex(name = 'V_72',
3950+ particles = [ P.b__tilde__, P.b, P.Tri80 ],
3951+ color = [ 'T(3,2,1)' ],
3952+ lorentz = [ L.FFV2 ],
3953+ couplings = {(0,0):C.GC_18})
3954+
3955+V_73 = Vertex(name = 'V_73',
3956+ particles = [ P.t__tilde__, P.t, P.Tri80 ],
3957+ color = [ 'T(3,2,1)' ],
3958+ lorentz = [ L.FFV2 ],
3959+ couplings = {(0,0):C.GC_19})
3960+
3961+V_74 = Vertex(name = 'V_74',
3962+ particles = [ P.t__tilde__, P.b, P.Tri8 ],
3963+ color = [ 'T(3,2,1)' ],
3964+ lorentz = [ L.FFV2 ],
3965+ couplings = {(0,0):C.GC_20})
3966+
3967+V_75 = Vertex(name = 'V_75',
3968+ particles = [ P.t__tilde__, P.t, P.A, P.H ],
3969+ color = [ 'Identity(1,2)' ],
3970+ lorentz = [ L.FFVS2, L.FFVS3 ],
3971+ couplings = {(0,0):C.GC_124,(0,1):C.GC_64})
3972+
3973+V_76 = Vertex(name = 'V_76',
3974+ particles = [ P.t__tilde__, P.t, P.A ],
3975+ color = [ 'Identity(1,2)' ],
3976+ lorentz = [ L.FFV1, L.FFV3, L.FFV8 ],
3977+ couplings = {(0,0):C.GC_2,(0,1):C.GC_130,(0,2):C.GC_81})
3978+
3979+V_77 = Vertex(name = 'V_77',
3980+ particles = [ P.t__tilde__, P.b, P.A, P.W__plus__, P.H ],
3981+ color = [ 'Identity(1,2)' ],
3982+ lorentz = [ L.FFVVS2 ],
3983+ couplings = {(0,0):C.GC_65})
3984+
3985+V_78 = Vertex(name = 'V_78',
3986+ particles = [ P.t__tilde__, P.b, P.A, P.W__plus__ ],
3987+ color = [ 'Identity(1,2)' ],
3988+ lorentz = [ L.FFVV2 ],
3989+ couplings = {(0,0):C.GC_82})
3990+
3991+V_79 = Vertex(name = 'V_79',
3992+ particles = [ P.t__tilde__, P.t, P.W__minus__, P.W__plus__, P.H ],
3993+ color = [ 'Identity(1,2)' ],
3994+ lorentz = [ L.FFVVS1, L.FFVVS2 ],
3995+ couplings = {(0,0):C.GC_122,(0,1):C.GC_44})
3996+
3997+V_80 = Vertex(name = 'V_80',
3998+ particles = [ P.t__tilde__, P.t, P.W__minus__, P.W__plus__ ],
3999+ color = [ 'Identity(1,2)' ],
4000+ lorentz = [ L.FFVV1, L.FFVV2 ],
4001+ couplings = {(0,0):C.GC_128,(0,1):C.GC_77})
4002+
4003+V_81 = Vertex(name = 'V_81',
4004+ particles = [ P.t__tilde__, P.b, P.W__plus__, P.Z, P.H ],
4005+ color = [ 'Identity(1,2)' ],
4006+ lorentz = [ L.FFVVS2 ],
4007+ couplings = {(0,0):C.GC_45})
4008+
4009+V_82 = Vertex(name = 'V_82',
4010+ particles = [ P.t__tilde__, P.b, P.W__plus__, P.Z ],
4011+ color = [ 'Identity(1,2)' ],
4012+ lorentz = [ L.FFVV2 ],
4013+ couplings = {(0,0):C.GC_78})
4014+
4015+V_83 = Vertex(name = 'V_83',
4016+ particles = [ P.t__tilde__, P.t, P.G, P.H ],
4017+ color = [ 'T(3,2,1)' ],
4018+ lorentz = [ L.FFVS2, L.FFVS3 ],
4019+ couplings = {(0,0):C.GC_116,(0,1):C.GC_33})
4020+
4021+V_84 = Vertex(name = 'V_84',
4022+ particles = [ P.t__tilde__, P.t, P.G ],
4023+ color = [ 'T(3,2,1)' ],
4024+ lorentz = [ L.FFV1, L.FFV3, L.FFV8 ],
4025+ couplings = {(0,0):C.GC_5,(0,1):C.GC_118,(0,2):C.GC_71})
4026+
4027+V_85 = Vertex(name = 'V_85',
4028+ particles = [ P.t__tilde__, P.t, P.G, P.G, P.H ],
4029+ color = [ 'f(3,4,-1)*T(-1,2,1)' ],
4030+ lorentz = [ L.FFVVS1, L.FFVVS2 ],
4031+ couplings = {(0,0):C.GC_117,(0,1):C.GC_38})
4032+
4033+V_86 = Vertex(name = 'V_86',
4034+ particles = [ P.t__tilde__, P.t, P.G, P.G ],
4035+ color = [ 'f(3,4,-1)*T(-1,2,1)' ],
4036+ lorentz = [ L.FFVV1, L.FFVV2 ],
4037+ couplings = {(0,0):C.GC_119,(0,1):C.GC_75})
4038+
4039+V_87 = Vertex(name = 'V_87',
4040+ particles = [ P.b__tilde__, P.t, P.A, P.W__minus__, P.H ],
4041+ color = [ 'Identity(1,2)' ],
4042+ lorentz = [ L.FFVVS1 ],
4043+ couplings = {(0,0):C.GC_125})
4044+
4045+V_88 = Vertex(name = 'V_88',
4046+ particles = [ P.b__tilde__, P.t, P.A, P.W__minus__ ],
4047+ color = [ 'Identity(1,2)' ],
4048+ lorentz = [ L.FFVV1 ],
4049+ couplings = {(0,0):C.GC_131})
4050+
4051+V_89 = Vertex(name = 'V_89',
4052+ particles = [ P.b__tilde__, P.t, P.W__minus__, P.Z, P.H ],
4053+ color = [ 'Identity(1,2)' ],
4054+ lorentz = [ L.FFVVS1 ],
4055+ couplings = {(0,0):C.GC_123})
4056+
4057+V_90 = Vertex(name = 'V_90',
4058+ particles = [ P.b__tilde__, P.t, P.W__minus__, P.Z ],
4059+ color = [ 'Identity(1,2)' ],
4060+ lorentz = [ L.FFVV1 ],
4061+ couplings = {(0,0):C.GC_129})
4062+
4063+V_91 = Vertex(name = 'V_91',
4064+ particles = [ P.d__tilde__, P.d, P.A ],
4065+ color = [ 'Identity(1,2)' ],
4066+ lorentz = [ L.FFV1 ],
4067+ couplings = {(0,0):C.GC_1})
4068+
4069+V_92 = Vertex(name = 'V_92',
4070+ particles = [ P.s__tilde__, P.s, P.A ],
4071+ color = [ 'Identity(1,2)' ],
4072+ lorentz = [ L.FFV1 ],
4073+ couplings = {(0,0):C.GC_1})
4074+
4075+V_93 = Vertex(name = 'V_93',
4076+ particles = [ P.b__tilde__, P.b, P.A ],
4077+ color = [ 'Identity(1,2)' ],
4078+ lorentz = [ L.FFV1 ],
4079+ couplings = {(0,0):C.GC_1})
4080+
4081+V_94 = Vertex(name = 'V_94',
4082+ particles = [ P.e__plus__, P.e__minus__, P.A ],
4083+ color = [ '1' ],
4084+ lorentz = [ L.FFV1 ],
4085+ couplings = {(0,0):C.GC_3})
4086+
4087+V_95 = Vertex(name = 'V_95',
4088+ particles = [ P.m__plus__, P.m__minus__, P.A ],
4089+ color = [ '1' ],
4090+ lorentz = [ L.FFV1 ],
4091+ couplings = {(0,0):C.GC_3})
4092+
4093+V_96 = Vertex(name = 'V_96',
4094+ particles = [ P.tt__plus__, P.tt__minus__, P.A ],
4095+ color = [ '1' ],
4096+ lorentz = [ L.FFV1 ],
4097+ couplings = {(0,0):C.GC_3})
4098+
4099+V_97 = Vertex(name = 'V_97',
4100+ particles = [ P.u__tilde__, P.u, P.A ],
4101+ color = [ 'Identity(1,2)' ],
4102+ lorentz = [ L.FFV1 ],
4103+ couplings = {(0,0):C.GC_2})
4104+
4105+V_98 = Vertex(name = 'V_98',
4106+ particles = [ P.c__tilde__, P.c, P.A ],
4107+ color = [ 'Identity(1,2)' ],
4108+ lorentz = [ L.FFV1 ],
4109+ couplings = {(0,0):C.GC_2})
4110+
4111+V_99 = Vertex(name = 'V_99',
4112+ particles = [ P.d__tilde__, P.d, P.G ],
4113+ color = [ 'T(3,2,1)' ],
4114+ lorentz = [ L.FFV1 ],
4115+ couplings = {(0,0):C.GC_5})
4116+
4117+V_100 = Vertex(name = 'V_100',
4118+ particles = [ P.s__tilde__, P.s, P.G ],
4119+ color = [ 'T(3,2,1)' ],
4120+ lorentz = [ L.FFV1 ],
4121+ couplings = {(0,0):C.GC_5})
4122+
4123+V_101 = Vertex(name = 'V_101',
4124+ particles = [ P.b__tilde__, P.b, P.G ],
4125+ color = [ 'T(3,2,1)' ],
4126+ lorentz = [ L.FFV1 ],
4127+ couplings = {(0,0):C.GC_5})
4128+
4129+V_102 = Vertex(name = 'V_102',
4130+ particles = [ P.d__tilde__, P.d, P.H ],
4131+ color = [ 'Identity(1,2)' ],
4132+ lorentz = [ L.FFS1 ],
4133+ couplings = {(0,0):C.GC_87})
4134+
4135+V_103 = Vertex(name = 'V_103',
4136+ particles = [ P.s__tilde__, P.s, P.H ],
4137+ color = [ 'Identity(1,2)' ],
4138+ lorentz = [ L.FFS1 ],
4139+ couplings = {(0,0):C.GC_90})
4140+
4141+V_104 = Vertex(name = 'V_104',
4142+ particles = [ P.d__tilde__, P.d, P.Z ],
4143+ color = [ 'Identity(1,2)' ],
4144+ lorentz = [ L.FFV2, L.FFV5 ],
4145+ couplings = {(0,0):C.GC_57,(0,1):C.GC_60})
4146+
4147+V_105 = Vertex(name = 'V_105',
4148+ particles = [ P.s__tilde__, P.s, P.Z ],
4149+ color = [ 'Identity(1,2)' ],
4150+ lorentz = [ L.FFV2, L.FFV5 ],
4151+ couplings = {(0,0):C.GC_57,(0,1):C.GC_60})
4152+
4153+V_106 = Vertex(name = 'V_106',
4154+ particles = [ P.d__tilde__, P.u, P.W__minus__ ],
4155+ color = [ 'Identity(1,2)' ],
4156+ lorentz = [ L.FFV2 ],
4157+ couplings = {(0,0):C.GC_48})
4158+
4159+V_107 = Vertex(name = 'V_107',
4160+ particles = [ P.d__tilde__, P.c, P.W__minus__ ],
4161+ color = [ 'Identity(1,2)' ],
4162+ lorentz = [ L.FFV2 ],
4163+ couplings = {(0,0):C.GC_51})
4164+
4165+V_108 = Vertex(name = 'V_108',
4166+ particles = [ P.d__tilde__, P.t, P.W__minus__ ],
4167+ color = [ 'Identity(1,2)' ],
4168+ lorentz = [ L.FFV2 ],
4169+ couplings = {(0,0):C.GC_54})
4170+
4171+V_109 = Vertex(name = 'V_109',
4172+ particles = [ P.s__tilde__, P.u, P.W__minus__ ],
4173+ color = [ 'Identity(1,2)' ],
4174+ lorentz = [ L.FFV2 ],
4175+ couplings = {(0,0):C.GC_49})
4176+
4177+V_110 = Vertex(name = 'V_110',
4178+ particles = [ P.s__tilde__, P.c, P.W__minus__ ],
4179+ color = [ 'Identity(1,2)' ],
4180+ lorentz = [ L.FFV2 ],
4181+ couplings = {(0,0):C.GC_52})
4182+
4183+V_111 = Vertex(name = 'V_111',
4184+ particles = [ P.s__tilde__, P.t, P.W__minus__ ],
4185+ color = [ 'Identity(1,2)' ],
4186+ lorentz = [ L.FFV2 ],
4187+ couplings = {(0,0):C.GC_55})
4188+
4189+V_112 = Vertex(name = 'V_112',
4190+ particles = [ P.b__tilde__, P.u, P.W__minus__ ],
4191+ color = [ 'Identity(1,2)' ],
4192+ lorentz = [ L.FFV2 ],
4193+ couplings = {(0,0):C.GC_50})
4194+
4195+V_113 = Vertex(name = 'V_113',
4196+ particles = [ P.b__tilde__, P.c, P.W__minus__ ],
4197+ color = [ 'Identity(1,2)' ],
4198+ lorentz = [ L.FFV2 ],
4199+ couplings = {(0,0):C.GC_53})
4200+
4201+V_114 = Vertex(name = 'V_114',
4202+ particles = [ P.u__tilde__, P.d, P.W__plus__ ],
4203+ color = [ 'Identity(1,2)' ],
4204+ lorentz = [ L.FFV2 ],
4205+ couplings = {(0,0):C.GC_107})
4206+
4207+V_115 = Vertex(name = 'V_115',
4208+ particles = [ P.c__tilde__, P.d, P.W__plus__ ],
4209+ color = [ 'Identity(1,2)' ],
4210+ lorentz = [ L.FFV2 ],
4211+ couplings = {(0,0):C.GC_110})
4212+
4213+V_116 = Vertex(name = 'V_116',
4214+ particles = [ P.t__tilde__, P.d, P.W__plus__ ],
4215+ color = [ 'Identity(1,2)' ],
4216+ lorentz = [ L.FFV2 ],
4217+ couplings = {(0,0):C.GC_113})
4218+
4219+V_117 = Vertex(name = 'V_117',
4220+ particles = [ P.u__tilde__, P.s, P.W__plus__ ],
4221+ color = [ 'Identity(1,2)' ],
4222+ lorentz = [ L.FFV2 ],
4223+ couplings = {(0,0):C.GC_108})
4224+
4225+V_118 = Vertex(name = 'V_118',
4226+ particles = [ P.c__tilde__, P.s, P.W__plus__ ],
4227+ color = [ 'Identity(1,2)' ],
4228+ lorentz = [ L.FFV2 ],
4229+ couplings = {(0,0):C.GC_111})
4230+
4231+V_119 = Vertex(name = 'V_119',
4232+ particles = [ P.t__tilde__, P.s, P.W__plus__ ],
4233+ color = [ 'Identity(1,2)' ],
4234+ lorentz = [ L.FFV2 ],
4235+ couplings = {(0,0):C.GC_114})
4236+
4237+V_120 = Vertex(name = 'V_120',
4238+ particles = [ P.u__tilde__, P.b, P.W__plus__ ],
4239+ color = [ 'Identity(1,2)' ],
4240+ lorentz = [ L.FFV2 ],
4241+ couplings = {(0,0):C.GC_109})
4242+
4243+V_121 = Vertex(name = 'V_121',
4244+ particles = [ P.c__tilde__, P.b, P.W__plus__ ],
4245+ color = [ 'Identity(1,2)' ],
4246+ lorentz = [ L.FFV2 ],
4247+ couplings = {(0,0):C.GC_112})
4248+
4249+V_122 = Vertex(name = 'V_122',
4250+ particles = [ P.u__tilde__, P.u, P.G ],
4251+ color = [ 'T(3,2,1)' ],
4252+ lorentz = [ L.FFV1 ],
4253+ couplings = {(0,0):C.GC_5})
4254+
4255+V_123 = Vertex(name = 'V_123',
4256+ particles = [ P.c__tilde__, P.c, P.G ],
4257+ color = [ 'T(3,2,1)' ],
4258+ lorentz = [ L.FFV1 ],
4259+ couplings = {(0,0):C.GC_5})
4260+
4261+V_124 = Vertex(name = 'V_124',
4262+ particles = [ P.e__plus__, P.e__minus__, P.H ],
4263+ color = [ '1' ],
4264+ lorentz = [ L.FFS1 ],
4265+ couplings = {(0,0):C.GC_88})
4266+
4267+V_125 = Vertex(name = 'V_125',
4268+ particles = [ P.m__plus__, P.m__minus__, P.H ],
4269+ color = [ '1' ],
4270+ lorentz = [ L.FFS1 ],
4271+ couplings = {(0,0):C.GC_89})
4272+
4273+V_126 = Vertex(name = 'V_126',
4274+ particles = [ P.tt__plus__, P.tt__minus__, P.H ],
4275+ color = [ '1' ],
4276+ lorentz = [ L.FFS1 ],
4277+ couplings = {(0,0):C.GC_92})
4278+
4279+V_127 = Vertex(name = 'V_127',
4280+ particles = [ P.u__tilde__, P.u, P.H ],
4281+ color = [ 'Identity(1,2)' ],
4282+ lorentz = [ L.FFS1 ],
4283+ couplings = {(0,0):C.GC_93})
4284+
4285+V_128 = Vertex(name = 'V_128',
4286+ particles = [ P.c__tilde__, P.c, P.H ],
4287+ color = [ 'Identity(1,2)' ],
4288+ lorentz = [ L.FFS1 ],
4289+ couplings = {(0,0):C.GC_86})
4290+
4291+V_129 = Vertex(name = 'V_129',
4292+ particles = [ P.e__plus__, P.e__minus__, P.Z ],
4293+ color = [ '1' ],
4294+ lorentz = [ L.FFV2, L.FFV6 ],
4295+ couplings = {(0,0):C.GC_57,(0,1):C.GC_61})
4296+
4297+V_130 = Vertex(name = 'V_130',
4298+ particles = [ P.m__plus__, P.m__minus__, P.Z ],
4299+ color = [ '1' ],
4300+ lorentz = [ L.FFV2, L.FFV6 ],
4301+ couplings = {(0,0):C.GC_57,(0,1):C.GC_61})
4302+
4303+V_131 = Vertex(name = 'V_131',
4304+ particles = [ P.tt__plus__, P.tt__minus__, P.Z ],
4305+ color = [ '1' ],
4306+ lorentz = [ L.FFV2, L.FFV6 ],
4307+ couplings = {(0,0):C.GC_57,(0,1):C.GC_61})
4308+
4309+V_132 = Vertex(name = 'V_132',
4310+ particles = [ P.e__plus__, P.ve, P.W__minus__ ],
4311+ color = [ '1' ],
4312+ lorentz = [ L.FFV2 ],
4313+ couplings = {(0,0):C.GC_47})
4314+
4315+V_133 = Vertex(name = 'V_133',
4316+ particles = [ P.m__plus__, P.vm, P.W__minus__ ],
4317+ color = [ '1' ],
4318+ lorentz = [ L.FFV2 ],
4319+ couplings = {(0,0):C.GC_47})
4320+
4321+V_134 = Vertex(name = 'V_134',
4322+ particles = [ P.tt__plus__, P.vt, P.W__minus__ ],
4323+ color = [ '1' ],
4324+ lorentz = [ L.FFV2 ],
4325+ couplings = {(0,0):C.GC_47})
4326+
4327+V_135 = Vertex(name = 'V_135',
4328+ particles = [ P.ve__tilde__, P.e__minus__, P.W__plus__ ],
4329+ color = [ '1' ],
4330+ lorentz = [ L.FFV2 ],
4331+ couplings = {(0,0):C.GC_47})
4332+
4333+V_136 = Vertex(name = 'V_136',
4334+ particles = [ P.vm__tilde__, P.m__minus__, P.W__plus__ ],
4335+ color = [ '1' ],
4336+ lorentz = [ L.FFV2 ],
4337+ couplings = {(0,0):C.GC_47})
4338+
4339+V_137 = Vertex(name = 'V_137',
4340+ particles = [ P.vt__tilde__, P.tt__minus__, P.W__plus__ ],
4341+ color = [ '1' ],
4342+ lorentz = [ L.FFV2 ],
4343+ couplings = {(0,0):C.GC_47})
4344+
4345+V_138 = Vertex(name = 'V_138',
4346+ particles = [ P.u__tilde__, P.u, P.Z ],
4347+ color = [ 'Identity(1,2)' ],
4348+ lorentz = [ L.FFV2, L.FFV7 ],
4349+ couplings = {(0,0):C.GC_58,(0,1):C.GC_60})
4350+
4351+V_139 = Vertex(name = 'V_139',
4352+ particles = [ P.c__tilde__, P.c, P.Z ],
4353+ color = [ 'Identity(1,2)' ],
4354+ lorentz = [ L.FFV2, L.FFV7 ],
4355+ couplings = {(0,0):C.GC_58,(0,1):C.GC_60})
4356+
4357+V_140 = Vertex(name = 'V_140',
4358+ particles = [ P.ve__tilde__, P.ve, P.Z ],
4359+ color = [ '1' ],
4360+ lorentz = [ L.FFV2 ],
4361+ couplings = {(0,0):C.GC_67})
4362+
4363+V_141 = Vertex(name = 'V_141',
4364+ particles = [ P.vm__tilde__, P.vm, P.Z ],
4365+ color = [ '1' ],
4366+ lorentz = [ L.FFV2 ],
4367+ couplings = {(0,0):C.GC_67})
4368+
4369+V_142 = Vertex(name = 'V_142',
4370+ particles = [ P.vt__tilde__, P.vt, P.Z ],
4371+ color = [ '1' ],
4372+ lorentz = [ L.FFV2 ],
4373+ couplings = {(0,0):C.GC_67})
4374+
4375
4376=== added file 'models/TopEffTh/write_param_card.py'
4377--- models/TopEffTh/write_param_card.py 1970-01-01 00:00:00 +0000
4378+++ models/TopEffTh/write_param_card.py 2011-10-12 10:39:26 +0000
4379@@ -0,0 +1,181 @@
4380+
4381+__date__ = "3 june 2010"
4382+__author__ = 'olivier.mattelaer@uclouvain.be'
4383+
4384+from function_library import *
4385+
4386+class ParamCardWriter(object):
4387+
4388+ header = \
4389+ """######################################################################\n""" + \
4390+ """## PARAM_CARD AUTOMATICALY GENERATED BY THE UFO #####################\n""" + \
4391+ """######################################################################\n"""
4392+
4393+ def __init__(self, filename, list_of_parameters=None, generic=False):
4394+ """write a valid param_card.dat"""
4395+
4396+ if not list_of_parameters:
4397+ from parameters import all_parameters
4398+ list_of_parameters = [param for param in all_parameters if \
4399+ param.nature=='external']
4400+
4401+ self.generic_output = generic
4402+ if generic:
4403+ self.define_not_dep_param(list_of_parameters)
4404+
4405+
4406+ self.fsock = open(filename, 'w')
4407+ self.fsock.write(self.header)
4408+
4409+ self.write_card(list_of_parameters)
4410+
4411+ def define_not_dep_param(self, list_of_parameters):
4412+ """define self.dep_mass and self.dep_width in case that they are
4413+ requested in the param_card.dat"""
4414+ from particles import all_particles
4415+
4416+ self.dep_mass = [(part, part.mass) for part in all_particles \
4417+ if part.pdg_code > 0 and \
4418+ part.mass not in list_of_parameters]
4419+ self.dep_width = [(part, part.width) for part in all_particles\
4420+ if part.pdg_code > 0 and \
4421+ part.width not in list_of_parameters]
4422+
4423+ @staticmethod
4424+ def order_param(obj1, obj2):
4425+ """ order parameter of a given block """
4426+
4427+ maxlen = min([len(obj1.lhacode), len(obj2.lhacode)])
4428+
4429+ for i in range(maxlen):
4430+ if obj1.lhacode[i] < obj2.lhacode[i]:
4431+ return -1
4432+ elif obj1.lhacode[i] == obj2.lhacode[i]:
4433+ return 0
4434+ else:
4435+ return 1
4436+ #identical up to the first finish
4437+ if len(obj1.lhacode) > len(obj2.lhacode):
4438+ return 1
4439+ elif len(obj1.lhacode) == len(obj2.lhacode):
4440+ return 0
4441+ else:
4442+ return -1
4443+
4444+ def write_card(self, all_ext_param):
4445+ """ """
4446+
4447+ # list all lhablock
4448+ all_lhablock = set([param.lhablock for param in all_ext_param])
4449+
4450+ # ordonate lhablock alphabeticaly
4451+ all_lhablock = list(all_lhablock)
4452+ all_lhablock.sort()
4453+ # put at the beginning SMINPUT + MASS + DECAY
4454+ for name in ['DECAY', 'MASS','SMINPUTS']:
4455+ if name in all_lhablock:
4456+ all_lhablock.remove(name)
4457+ all_lhablock.insert(0, name)
4458+
4459+ for lhablock in all_lhablock:
4460+ self.write_block(lhablock)
4461+ need_writing = [ param for param in all_ext_param if \
4462+ param.lhablock == lhablock]
4463+ need_writing.sort(self.order_param)
4464+ [self.write_param(param, lhablock) for param in need_writing]
4465+
4466+ if self.generic_output:
4467+ if lhablock in ['MASS', 'DECAY']:
4468+ self.write_dep_param_block(lhablock)
4469+
4470+ if self.generic_output:
4471+ self.write_qnumber()
4472+
4473+ def write_block(self, name):
4474+ """ write a comment for a block"""
4475+
4476+ self.fsock.writelines(
4477+ """\n###################################""" + \
4478+ """\n## INFORMATION FOR %s""" % name.upper() +\
4479+ """\n###################################\n"""
4480+ )
4481+ if name!='DECAY':
4482+ self.fsock.write("""Block %s \n""" % name)
4483+
4484+ def write_param(self, param, lhablock):
4485+
4486+ lhacode=' '.join(['%3s' % key for key in param.lhacode])
4487+ if lhablock != 'DECAY':
4488+ text = """ %s %e # %s \n""" % (lhacode, complex(param.value).real, param.name )
4489+ else:
4490+ text = '''DECAY %s %e \n''' % (lhacode, complex(param.value).real)
4491+ self.fsock.write(text)
4492+
4493+
4494+
4495+
4496+ def write_dep_param_block(self, lhablock):
4497+ import cmath
4498+ from parameters import all_parameters
4499+ for parameter in all_parameters:
4500+ exec("%s = %s" % (parameter.name, parameter.value))
4501+ text = "## Not dependent paramater.\n"
4502+ text += "## Those values should be edited following analytical the \n"
4503+ text += "## analytical expression. Some generator could simply ignore \n"
4504+ text += "## those values and use the analytical expression\n"
4505+
4506+ if lhablock == 'MASS':
4507+ data = self.dep_mass
4508+ prefix = " "
4509+ else:
4510+ data = self.dep_width
4511+ prefix = "DECAY "
4512+ for part, param in data:
4513+ if isinstance(param.value, str):
4514+ value = complex(eval(param.value)).real
4515+ else:
4516+ value = param.value
4517+
4518+ text += """%s %s %f # %s : %s \n""" %(prefix, part.pdg_code,
4519+ value, part.name, param.value)
4520+ self.fsock.write(text)
4521+
4522+ sm_pdg = [1,2,3,4,5,6,11,12,13,13,14,15,16,21,22,23,24,25]
4523+ data="""Block QNUMBERS %(pdg)d # %(name)s
4524+ 1 %(charge)d # 3 times electric charge
4525+ 2 %(spin)d # number of spin states (2S+1)
4526+ 3 %(color)d # colour rep (1: singlet, 3: triplet, 8: octet)
4527+ 4 %(antipart)d # Particle/Antiparticle distinction (0=own anti)\n"""
4528+
4529+ def write_qnumber(self):
4530+ """ write qnumber """
4531+ from particles import all_particles
4532+ import particles
4533+ print particles.__file__
4534+ text="""#===========================================================\n"""
4535+ text += """# QUANTUM NUMBERS OF NEW STATE(S) (NON SM PDG CODE)\n"""
4536+ text += """#===========================================================\n\n"""
4537+
4538+ for part in all_particles:
4539+ if part.pdg_code in self.sm_pdg or part.pdg_code < 0:
4540+ continue
4541+ text += self.data % {'pdg': part.pdg_code,
4542+ 'name': part.name,
4543+ 'charge': 3 * part.charge,
4544+ 'spin': 2 * part.spin + 1,
4545+ 'color': part.color,
4546+ 'antipart': part.name != part.antiname and 1 or 0}
4547+
4548+ self.fsock.write(text)
4549+
4550+
4551+
4552+
4553+
4554+
4555+
4556+
4557+if '__main__' == __name__:
4558+ ParamCardWriter('./param_card.dat', generic=True)
4559+ print 'write ./param_card.dat'
4560+
4561
4562=== modified file 'tests/acceptance_tests/test_cmd.py'
4563--- tests/acceptance_tests/test_cmd.py 2011-09-18 02:38:48 +0000
4564+++ tests/acceptance_tests/test_cmd.py 2011-10-12 10:39:26 +0000
4565@@ -120,11 +120,12 @@
4566 if sys.platform == 'darwin':
4567 self.assertEqual(launch_ext.open_file.web_browser, None)
4568 self.assertEqual(launch_ext.open_file.text_editor, text_editor)
4569- self.assertEqual(launch_ext.open_file.web_browser, None)
4570+ self.assertEqual(launch_ext.open_file.eps_viewer, None)
4571 else:
4572 self.assertEqual(launch_ext.open_file.web_browser, 'firefox')
4573 self.assertEqual(launch_ext.open_file.text_editor, text_editor)
4574- self.assertEqual(launch_ext.open_file.web_browser, 'gv')
4575+ self.assertEqual(launch_ext.open_file.eps_viewer, 'gv')
4576+
4577 class TestCmdShell2(unittest.TestCase,
4578 test_file_writers.CheckFileCreate):
4579 """Test all command line related to MG_ME"""
4580
4581=== modified file 'tests/unit_tests/iolibs/test_export_v4.py'
4582--- tests/unit_tests/iolibs/test_export_v4.py 2011-10-03 04:26:01 +0000
4583+++ tests/unit_tests/iolibs/test_export_v4.py 2011-10-12 10:39:26 +0000
4584@@ -3357,6 +3357,58 @@
4585 DATA MAPCONFIG(0)/42/
4586 """)
4587
4588+ # Test dummy config_subproc_map.inc file
4589+ writer = writers.FortranWriter(self.give_pos('test'))
4590+ exporter.write_config_subproc_map_file(writer, s_and_t_channels)
4591+ writer.close()
4592+
4593+ self.assertFileContains('test',
4594+""" DATA CONFSUB(1,1)/1/
4595+ DATA CONFSUB(1,2)/1/
4596+ DATA CONFSUB(1,3)/1/
4597+ DATA CONFSUB(1,4)/1/
4598+ DATA CONFSUB(1,5)/1/
4599+ DATA CONFSUB(1,6)/1/
4600+ DATA CONFSUB(1,7)/1/
4601+ DATA CONFSUB(1,8)/1/
4602+ DATA CONFSUB(1,9)/1/
4603+ DATA CONFSUB(1,10)/1/
4604+ DATA CONFSUB(1,11)/1/
4605+ DATA CONFSUB(1,12)/1/
4606+ DATA CONFSUB(1,13)/1/
4607+ DATA CONFSUB(1,14)/1/
4608+ DATA CONFSUB(1,15)/1/
4609+ DATA CONFSUB(1,16)/1/
4610+ DATA CONFSUB(1,17)/1/
4611+ DATA CONFSUB(1,18)/1/
4612+ DATA CONFSUB(1,19)/1/
4613+ DATA CONFSUB(1,20)/1/
4614+ DATA CONFSUB(1,21)/1/
4615+ DATA CONFSUB(1,22)/1/
4616+ DATA CONFSUB(1,23)/1/
4617+ DATA CONFSUB(1,24)/1/
4618+ DATA CONFSUB(1,25)/1/
4619+ DATA CONFSUB(1,26)/1/
4620+ DATA CONFSUB(1,27)/1/
4621+ DATA CONFSUB(1,28)/1/
4622+ DATA CONFSUB(1,29)/1/
4623+ DATA CONFSUB(1,30)/1/
4624+ DATA CONFSUB(1,31)/1/
4625+ DATA CONFSUB(1,32)/1/
4626+ DATA CONFSUB(1,33)/1/
4627+ DATA CONFSUB(1,34)/1/
4628+ DATA CONFSUB(1,35)/1/
4629+ DATA CONFSUB(1,36)/1/
4630+ DATA CONFSUB(1,37)/1/
4631+ DATA CONFSUB(1,38)/1/
4632+ DATA CONFSUB(1,39)/1/
4633+ DATA CONFSUB(1,40)/1/
4634+ DATA CONFSUB(1,41)/1/
4635+ DATA CONFSUB(1,42)/1/
4636+""")
4637+
4638+ #print open(self.give_pos('test')).read()
4639+
4640 # Test coloramps.inc output
4641 self.assertEqual("\n".join(\
4642 exporter.get_icolamp_lines(mapconfigs,
4643@@ -3660,6 +3712,18 @@
4644 DATA MAPCONFIG(0)/3/
4645 """)
4646
4647+ # Test dummy config_subproc_map.inc file
4648+ writer = writers.FortranWriter(self.give_pos('test'))
4649+ exporter.write_config_subproc_map_file(writer,
4650+ s_and_t_channels)
4651+ writer.close()
4652+ #print open(self.give_pos('test')).read()
4653+ self.assertFileContains('test',
4654+""" DATA CONFSUB(1,1)/1/
4655+ DATA CONFSUB(1,2)/1/
4656+ DATA CONFSUB(1,3)/1/
4657+""")
4658+
4659 def test_generate_helas_diagrams_uu_susu(self):
4660 """Testing the helas diagram generation u u > su su with t-channel n1
4661 """
4662
4663=== modified file 'tests/unit_tests/various/test_diquark_models.py'
4664--- tests/unit_tests/various/test_diquark_models.py 2011-04-15 04:15:48 +0000
4665+++ tests/unit_tests/various/test_diquark_models.py 2011-10-12 10:39:26 +0000
4666@@ -181,11 +181,11 @@
4667 2)
4668 self.assertEqual(len(col_flow), len(matrix_element.get('color_basis')))
4669 self.assertEqual(col_flow,
4670- [{1: [502, 0], 2: [0, 501],
4671- 3: [502, -503], 4: [-503, 501]},
4672- {1: [502, 0], 2: [0, 501],
4673- 3: [502, -503], 4: [-503, 501]},
4674- {1: [501, 0], 2: [0, 501],
4675+ [{1: [503, 0], 2: [0, 501],
4676+ 3: [502, -503], 4: [-501, 502]},
4677+ {1: [502, 0], 2: [0, 501],
4678+ 3: [502, -503], 4: [-503, 501]},
4679+ {1: [501, 0], 2: [0, 501],
4680 3: [502, -503], 4: [-502, 503]}])
4681
4682 # Test u u > six g
4683@@ -223,14 +223,14 @@
4684 2)
4685 self.assertEqual(len(col_flow), len(matrix_element.get('color_basis')))
4686 self.assertEqual(col_flow,
4687- [{1: [501, 0], 2: [502, 0],
4688- 3: [501, -503], 4: [502, 503]},
4689- {1: [502, 0], 2: [503, 0],
4690- 3: [501, -503], 4: [502, 501]},
4691- {1: [501, 0], 2: [502, 0],
4692- 3: [501, -503], 4: [502, 503]},
4693- {1: [502, 0], 2: [501, 0],
4694- 3: [501, -503], 4: [502, 503]}])
4695+ [{1: [503, 0], 2: [502, 0],
4696+ 3: [501, -503], 4: [502, 501]},
4697+ {1: [502, 0], 2: [503, 0],
4698+ 3: [501, -503], 4: [502, 501]},
4699+ {1: [501, 0], 2: [502, 0],
4700+ 3: [501, -503], 4: [502, 503]},
4701+ {1: [502, 0], 2: [501, 0],
4702+ 3: [501, -503], 4: [502, 503]}])
4703
4704 # Test u u > six > u u g
4705
4706@@ -267,14 +267,14 @@
4707 2)
4708 self.assertEqual(len(col_flow), len(matrix_element.get('color_basis')))
4709 self.assertEqual(col_flow,
4710- [{1: [501, 0], 2: [503, 0], 3: [501, 0],
4711- 4: [502, 0], 5: [503, 502]},
4712- {1: [503, 0], 2: [501, 0], 3: [501, 0],
4713- 4: [502, 0], 5: [503, 502]},
4714- {1: [502, 0], 2: [503, 0], 3: [501, 0],
4715- 4: [502, 0], 5: [503, 501]},
4716- {1: [503, 0], 2: [502, 0], 3: [501, 0],
4717- 4: [502, 0], 5: [503, 501]}])
4718+ [{1: [501, 0], 2: [503, 0], 3: [501, 0],
4719+ 4: [502, 0], 5: [503, 502]},
4720+ {1: [503, 0], 2: [501, 0], 3: [501, 0],
4721+ 4: [502, 0], 5: [503, 502]},
4722+ {1: [502, 0], 2: [503, 0], 3: [501, 0],
4723+ 4: [502, 0], 5: [503, 501]}, {1: [503, 0],
4724+ 2: [502, 0], 3: [501, 0],
4725+ 4: [502, 0], 5: [503, 501]}])
4726
4727 # Test six > u u
4728
4729@@ -304,7 +304,31 @@
4730 2)
4731 self.assertEqual(len(col_flow), len(matrix_element.get('color_basis')))
4732 self.assertEqual(col_flow,
4733- [{1: [502, -501], 2: [0, 501], 3: [502, 0]}])
4734+ [{1: [501, -502], 2: [0, 501], 3: [502, 0]}])
4735+
4736+ # Test the size of the color basis in g g > g six six
4737+
4738+ myleglist = base_objects.LegList()
4739+
4740+
4741+ myleglist.append(base_objects.Leg({'id':21,
4742+ 'state':False}))
4743+ myleglist.append(base_objects.Leg({'id':21,
4744+ 'state':False}))
4745+ myleglist.append(base_objects.Leg({'id':21,
4746+ 'state':True}))
4747+ myleglist.append(base_objects.Leg({'id':9000006,
4748+ 'state':True}))
4749+ myleglist.append(base_objects.Leg({'id':-9000006,
4750+ 'state':True}))
4751+
4752+ myproc = base_objects.Process({'legs':myleglist,
4753+ 'model':self.base_model})
4754+
4755+ myamp = diagram_generation.Amplitude(myproc)
4756+ matrix_element = helas_objects.HelasMatrixElement(myamp)
4757+ self.assertEqual(13, len(matrix_element.get('color_basis')))
4758+
4759
4760 #===============================================================================
4761 # TestColorTripletModel

Subscribers

People subscribed via source and target branches