@@ -3758,7 +3758,7 @@ def default_setup(self):
37583758 self ['has_mirror_process' ] = False
37593759 self ['allowed_flavors' ] = [] # list of all allowed flavors for the process
37603760 self ['allowed_flavors_with_iden' ] = [] # list of all allowed flavors for the process but grouped by identical matrix-element
3761- self ['allowed_flavors_unique ' ] = []
3761+ self ['allowed_flavors_with_iden_sign ' ] = [] # list of all allowed flavors for the process but grouped by identical matrix-element
37623762
37633763 def filter (self , name , value ):
37643764 """Filter for valid diagram property values."""
@@ -5136,12 +5136,12 @@ def get_external_nhel(self):
51365136 return allowed_helicity
51375137
51385138
5139- def get_external_flavors (self , all_perm = False , preserve_sign = False ):
5139+ def get_external_flavors (self , all_perm = False , return_sign = False ):
51405140 """If merged particles are used, determine the list of possible flavor that are not zero """
51415141
51425142 if self ['allowed_flavors' ]:
5143- if preserve_sign :
5144- return self ['allowed_flavors_sign' ]
5143+ if return_sign :
5144+ return self ['allowed_flavors' ], self [ ' allowed_flavors_sign' ]
51455145 else :
51465146 return self ['allowed_flavors' ]
51475147 pdgs = []
@@ -5150,12 +5150,8 @@ def get_external_flavors(self, all_perm=False, preserve_sign=False):
51505150 external_number = 1
51515151 for wf in external_wfs :
51525152 if wf .get ('number_external' )== external_number :
5153- pdgs .append (
5154- wf .get ('particle' ).get_pdg_code ()
5155- if external_number > 2
5156- else wf .get ('particle' ).get_anti_pdg_code ()
5157- )
51585153 external_number = external_number + 1
5154+ pdgs .append (wf .get ('particle' ).get_pdg_code ())
51595155
51605156 to_map = {}
51615157 model = self .get ('processes' )[0 ].get ('model' )
@@ -5164,7 +5160,6 @@ def get_external_flavors(self, all_perm=False, preserve_sign=False):
51645160
51655161 flavor_list = []
51665162 pdg_list = []
5167-
51685163 restricted_flavor = [None ]* len (external_wfs )
51695164 for i ,wf in enumerate (external_wfs ):
51705165 if wf .get ('flavor' ):
@@ -5222,43 +5217,38 @@ def get_external_flavors(self, all_perm=False, preserve_sign=False):
52225217
52235218 self ['allowed_flavors' ] = flavor_list
52245219 self ['allowed_flavors_sign' ] = pdg_list
5225- return pdg_list if preserve_sign else flavor_list
5220+ if return_sign :
5221+ return self ['allowed_flavors' ], self ['allowed_flavors_sign' ]
5222+ else :
5223+ return self ['allowed_flavors' ]
52265224
5227- def get_external_flavors_with_iden (self , return_pdgs = False ):
5225+ def get_external_flavors_with_iden (self , return_sign = False ):
52285226 if self ['allowed_flavors_with_iden' ]:
5229- return self ['allowed_flavors_with_iden' ]
5227+ if return_sign :
5228+ return self ['allowed_flavors_with_iden' ], self ['allowed_flavors_with_iden_sign' ]
5229+ else :
5230+ return self ['allowed_flavors_with_iden' ]
52305231
52315232 model = self .get ('processes' )[0 ].get ('model' )
5232- all_flv = self .get_external_flavors ()
5233+ all_flv , all_flv_sign = self .get_external_flavors (return_sign = True )
52335234 map_all_flv = {}
5234- for i , flv1 in enumerate (all_flv ):
5235+ map_all_flv_sign = {}
5236+ for i , (flv1 , flv1_sign ) in enumerate (zip (all_flv , all_flv_sign )):
52355237 coup = self .get_coupling_for_flv (flv1 , model )
52365238 if coup in map_all_flv :
52375239 map_all_flv [coup ].append (flv1 )
5240+ map_all_flv_sign [coup ].append (flv1_sign )
52385241 else :
52395242 map_all_flv [coup ] = [flv1 ]
5243+ map_all_flv_sign [coup ] = [flv1_sign ]
52405244
5245+ self ['allowed_flavors_with_iden_sign' ] = map_all_flv_sign .values ()
52415246 self ['allowed_flavors_with_iden' ] = map_all_flv .values ()
5242- return self ['allowed_flavors_with_iden' ]
5243-
5244- def get_external_flavors_unique (self ):
5245- if self ['allowed_flavors_unique' ]:
5246- return self ['allowed_flavors_unique' ]
5247-
5248- model = self .get ('processes' )[0 ].get ('model' )
5249- all_flv = self .get_external_flavors (preserve_sign = True )
5250- map_all_flv = {}
5251- for i , flv1 in enumerate (all_flv ):
5252- coup = self .get_coupling_for_flv (flv1 , model )
5253- key = (coup , flv1 [0 ], flv1 [1 ])
5254- if key in map_all_flv :
5255- map_all_flv [key ].append (flv1 )
5256- else :
5257- map_all_flv [key ] = [flv1 ]
5247+ if return_sign :
5248+ return self ['allowed_flavors_with_iden' ], self ['allowed_flavors_with_iden_sign' ]
5249+ else :
5250+ return self ['allowed_flavors_with_iden' ]
52585251
5259- self ['allowed_flavors_unique' ] = list (map_all_flv .values ())
5260- return self ['allowed_flavors_unique' ]
5261-
52625252 def check_flavor (self , real_pdgs , model , debug = False ):
52635253 """check if any feynman diagram is compatible with the pdg codes replaced by the real_pdgs"""
52645254 HelasDiagram .done_flavor = []
0 commit comments