~maddevelopers/mg5amcnlo/2.6.6_py3

« back to all changes in this revision

Viewing changes to models/sm/write_param_card.py

  • Committer: olivier-mattelaer
  • Date: 2019-07-27 21:18:13 UTC
  • Revision ID: olivier-mattelaer-20190727211813-58cdnat0ii160fx5
change in the way model are imported (looks like they are still some side effects)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
from __future__ import absolute_import
3
3
from __future__ import print_function
4
 
__date__ = "02 Aug 2012"
 
4
from six.moves import range
 
5
__date__ = "3 june 2010"
5
6
__author__ = 'olivier.mattelaer@uclouvain.be'
6
7
 
7
 
import sys
8
 
if sys.version_info[0] ==2:
9
 
    PY3 = False
10
 
else:
11
 
    PY3 = True
12
 
 
13
 
if PY3 and not __package__:
14
 
    import os
15
 
    pjoin = os.path.join
16
 
    root = os.path.abspath(os.path.dirname(__file__))
17
 
    sys.path.append(os.path.dirname(root))
18
 
    __package__ = os.path.basename(root)
19
 
    import importlib
20
 
    importlib.import_module(os.path.basename(root))
21
 
 
22
 
 
23
 
from .function_library import *
24
 
 
25
 
 
26
 
 
 
8
from function_library import *
27
9
 
28
10
class ParamCardWriter(object):
29
11
    
36
18
        """write a valid param_card.dat"""
37
19
        
38
20
        if not list_of_parameters:
39
 
            from .parameters import all_parameters
 
21
            from parameters import all_parameters
40
22
            list_of_parameters = [param for param in all_parameters if \
41
23
                                                       param.nature=='external']
42
24
        
49
31
        self.fsock.write(self.header)
50
32
        
51
33
        self.write_card(list_of_parameters)
52
 
        self.fsock.close()
53
34
    
54
35
    def define_not_dep_param(self, list_of_parameters):
55
36
        """define self.dep_mass and self.dep_width in case that they are 
56
37
        requested in the param_card.dat"""
57
 
        from .particles import all_particles
 
38
        from particles import all_particles
58
39
        
59
40
        self.dep_mass = [(part, part.mass) for part in all_particles \
60
41
                            if part.pdg_code > 0 and \
103
84
            self.write_block(lhablock)
104
85
            need_writing = [ param for param in all_ext_param if \
105
86
                                                     param.lhablock == lhablock]
106
 
            if PY3:
107
 
                need_writing.sort(key=misc.cmp_to_key(self.order_param))
108
 
            else:
109
 
                need_writing.sort(self.order_param)
 
87
            need_writing.sort(self.order_param)
110
88
            [self.write_param(param, lhablock) for param in need_writing]
111
89
            
112
90
            if self.generic_output:
115
93
 
116
94
        if self.generic_output:
117
95
            self.write_qnumber()
118
 
            
119
 
                              
 
96
                               
120
97
    def write_block(self, name):
121
98
        """ write a comment for a block"""
122
99
        
142
119
    
143
120
    def write_dep_param_block(self, lhablock):
144
121
        import cmath
145
 
        from .parameters import all_parameters
 
122
        from parameters import all_parameters
146
123
        for parameter in all_parameters:
147
124
            exec("%s = %s" % (parameter.name, parameter.value))
148
125
        text = "##  Not dependent paramater.\n"
175
152
    
176
153
    def write_qnumber(self):
177
154
        """ write qnumber """
178
 
        from .particles import all_particles
179
 
        from . import particles
 
155
        from particles import all_particles
 
156
        
180
157
        text="""#===========================================================\n"""
181
158
        text += """# QUANTUM NUMBERS OF NEW STATE(S) (NON SM PDG CODE)\n"""
182
159
        text += """#===========================================================\n\n"""
187
164
            text += self.data % {'pdg': part.pdg_code,
188
165
                                 'name': part.name,
189
166
                                 'charge': 3 * part.charge,
190
 
                                 'spin': part.spin,
 
167
                                 'spin': 2 * part.spin + 1,
191
168
                                 'color': part.color,
192
169
                                 'antipart': part.name != part.antiname and 1 or 0}
193
170
        
194
171
        self.fsock.write(text)
195
172
        
 
173
        
196
174
            
197
175
            
198
176