def get_substitutions(self, substitutions): # This assumes that the substitutions are done by index, could add option to # do them by ID as well. self.set_carets(False) subs = {} if isinstance(substitutions, dict): substitutions = tuple(substitutions.iteritems()) else: substitutions = enumerate(substitutions) originalcc = self.cc newdesc = ParticleDescriptor(self.particle.pdgid, daughters=self.daughters, cc=self.cc, alias=self.alias) self.cc = False conj = self.conjugate() for i, sub in substitutions: newdesc.get_daughter(i).particle = particledb.find_particle(sub) subdesc = ParticleDescriptor(sub) subdescconj = subdesc.conjugate() for fulldesc, subd in (self, subdesc), (conj, subdescconj): fulldesc.get_daughter(i).caret = True subs[fulldesc.to_string()] = subd.to_string() fulldesc.get_daughter(i).caret = False self.cc = originalcc return subs, newdesc
def get_substitutions(self, substitutions) : # This assumes that the substitutions are done by index, could add option to # do them by ID as well. self.set_carets(False) subs = {} if isinstance(substitutions, dict) : substitutions = tuple(substitutions.iteritems()) else : substitutions = enumerate(substitutions) originalcc = self.cc newdesc = ParticleDescriptor(self.particle.pdgid, daughters = self.daughters, cc = self.cc, alias = self.alias) self.cc = False conj = self.conjugate() for i, sub in substitutions : newdesc.get_daughter(i).particle = particledb.find_particle(sub) subdesc = ParticleDescriptor(sub) subdescconj = subdesc.conjugate() for fulldesc, subd in (self, subdesc), (conj, subdescconj) : fulldesc.get_daughter(i).caret = True subs[fulldesc.to_string()] = subd.to_string() fulldesc.get_daughter(i).caret = False self.cc = originalcc return subs, newdesc
def __init__(self, partid, cc = False, daughters = (), alias = None) : try : self.particle = particledb.find_particle(partid) except TypeError : raise TypeError('ParticleDescriptor.__init__: Couldn\'t find particle from ID {0!r}.'.format(partid)) if not self.particle : raise ValueError('ParticleDescriptor.__init__: Couldn\'t find particle from ID {0!r}.'.format(partid)) self.cc = cc self.daughters = list(daughters) self.caret = False self.alias = alias