Enabling simultaneous rendering of multiple input files.

Sun, 27 Feb 2011 00:14:05 +0100

author
Andy Buckley <andy@insectnation.org>
date
Sun, 27 Feb 2011 00:14:05 +0100
changeset 123
c85e29bc13c4
parent 122
c8700617f20c
child 124
7bd52be093b2

Enabling simultaneous rendering of multiple input files.

ChangeLog file | annotate | diff | comparison | revisions
pyslha.py file | annotate | diff | comparison | revisions
slhaplot file | annotate | diff | comparison | revisions
spcfiles/SPheno.spc file | annotate | diff | comparison | revisions
     1.1 --- a/ChangeLog	Sat Feb 26 23:30:18 2011 +0100
     1.2 +++ b/ChangeLog	Sun Feb 27 00:14:05 2011 +0100
     1.3 @@ -1,3 +1,9 @@
     1.4 +2011-02-27  Andy Buckley  <andy@insectnation.org>
     1.5 +
     1.6 +	* Enabling simultaneous rendering of multiple input files.
     1.7 +
     1.8 +	* Adding repr() implementations for the pyslha objects.
     1.9 +
    1.10  2011-02-26  Andy Buckley  <andy@insectnation.org>
    1.11  
    1.12  	* Adding some more LHA spectrum files to the collection for testing.
     2.1 --- a/pyslha.py	Sat Feb 26 23:30:18 2011 +0100
     2.2 +++ b/pyslha.py	Sun Feb 27 00:14:05 2011 +0100
     2.3 @@ -84,6 +84,9 @@
     2.4          s += str(self.entries)
     2.5          return s
     2.6  
     2.7 +    def __repr__(self):
     2.8 +        return self.__str__()
     2.9 +
    2.10  
    2.11  class Decay(object):
    2.12      """
    2.13 @@ -110,6 +113,9 @@
    2.14      def __str__(self):
    2.15          return "%e %s" % (self.br, self.ids)
    2.16  
    2.17 +    def __repr__(self):
    2.18 +        return self.__str__()
    2.19 +
    2.20  
    2.21  class Particle(object):
    2.22      """
    2.23 @@ -149,6 +155,10 @@
    2.24                  s += "\n  %s" % d
    2.25          return s
    2.26  
    2.27 +    def __repr__(self):
    2.28 +        return self.__str__()
    2.29 +
    2.30 +
    2.31  
    2.32  def readSLHAFile(spcfilename, **kwargs):
    2.33      """
     3.1 --- a/slhaplot	Sat Feb 26 23:30:18 2011 +0100
     3.2 +++ b/slhaplot	Sun Feb 27 00:14:05 2011 +0100
     3.3 @@ -3,7 +3,7 @@
     3.4  # from __future__ import with_statement
     3.5  
     3.6  """\
     3.7 -Usage: %prog [options] <spcfile>
     3.8 +Usage: %prog [options] <spcfile> [<spcfile2> ...]
     3.9  
    3.10  Make a SUSY mass spectrum plot from an SLHA or ISAWIG spectrum file. If the
    3.11  filename ends with .isa, it will be assumed to be an ISAWIG file, otherwise
    3.12 @@ -15,7 +15,7 @@
    3.13  
    3.14  TODOs:
    3.15    * Allow user to provide a file which defines the particle line x-positions, labels, etc.
    3.16 -  * Provide nicer format names than the "tikz"-oriented ones, now that make-plots isn't supported
    3.17 +  * Use verbosity-controlled logging
    3.18    * Allow user control over aspect ratio / geometry
    3.19    * EPS and PNG output
    3.20    * Use proper distinction between physical, plot-logical, and plot output coords
    3.21 @@ -77,45 +77,11 @@
    3.22          self.color = color
    3.23  
    3.24  
    3.25 -
    3.26 -XHIGGS = 0.0
    3.27 -XSLEPTON = 5.0
    3.28 -XGAUGINO = 10.0
    3.29 -XSUSYQCD = 15.0
    3.30 -
    3.31 -PDETAILS = {
    3.32 -    25 : ParticleDetails(Label(r"$h^0$"), XHIGGS, -0.2, color="blue"),
    3.33 -    35 : ParticleDetails(Label(r"$H^0$"), XHIGGS, -0.2, color="blue"),
    3.34 -    36 : ParticleDetails(Label(r"$A^0$"), XHIGGS, -0.2, color="blue"),
    3.35 -    37 : ParticleDetails(Label(r"$H^\pm$"), XHIGGS, 0.2, color="red"),
    3.36 -    1000011 : ParticleDetails(Label(r"$\tilde{\ell}_\text{L}$"), XSLEPTON, -0.2, color="blue"),
    3.37 -    2000011 : ParticleDetails(Label(r"$\tilde{\ell}_\text{R}$"), XSLEPTON, -0.2, color="blue"),
    3.38 -    1000015 : ParticleDetails(Label(r"$\tilde{\tau}_1$"), XSLEPTON, 0.2, color="red"),
    3.39 -    2000015 : ParticleDetails(Label(r"$\tilde{\tau}_2$"), XSLEPTON, 0.2, color="red"),
    3.40 -    1000012 : ParticleDetails(Label(r"$\tilde{\nu}_\text{L}$"), XSLEPTON, -0.2, color="blue"),
    3.41 -    1000016 : ParticleDetails(Label(r"$\tilde{\nu}_\tau$"), XSLEPTON, 0.2, color="red"),
    3.42 -    1000022 : ParticleDetails(Label(r"$\tilde{\chi}_1^0$"), XGAUGINO, -0.2, color="blue"),
    3.43 -    1000023 : ParticleDetails(Label(r"$\tilde{\chi}_2^0$"), XGAUGINO, -0.2, color="blue"),
    3.44 -    1000025 : ParticleDetails(Label(r"$\tilde{\chi}_3^0$"), XGAUGINO, -0.2, color="blue"),
    3.45 -    1000035 : ParticleDetails(Label(r"$\tilde{\chi}_4^0$"), XGAUGINO, -0.2, color="blue"),
    3.46 -    1000024 : ParticleDetails(Label(r"$\tilde{\chi}_1^\pm$"), XGAUGINO, 0.2, color="red"),
    3.47 -    1000037 : ParticleDetails(Label(r"$\tilde{\chi}_2^\pm$"), XGAUGINO, 0.2, color="red"),
    3.48 -    1000039 : ParticleDetails(Label(r"$\tilde{G}$"), XGAUGINO,  0.15, color="black!50!blue!30!green"),
    3.49 -    1000021 : ParticleDetails(Label(r"$\tilde{g}$"), XSUSYQCD, -0.3, color="black!50!blue!30!green"),
    3.50 -    1000001 : ParticleDetails(Label(r"$\tilde{q}_\text{L}$"), XSUSYQCD, -0.1, color="blue"),
    3.51 -    2000001 : ParticleDetails(Label(r"$\tilde{q}_\text{R}$"), XSUSYQCD, -0.1, color="blue"),
    3.52 -    1000005 : ParticleDetails(Label(r"$\tilde{b}_1$"), XSUSYQCD, 0.2, color="black!50!blue!30!green"),
    3.53 -    2000005 : ParticleDetails(Label(r"$\tilde{b}_2$"), XSUSYQCD, 0.2, color="black!50!blue!30!green"),
    3.54 -    1000006 : ParticleDetails(Label(r"$\tilde{t}_1$"), XSUSYQCD, 0.2, color="red"),
    3.55 -    2000006 : ParticleDetails(Label(r"$\tilde{t}_2$"), XSUSYQCD, 0.2, color="red")
    3.56 -}
    3.57 -
    3.58 -
    3.59  import pyslha
    3.60  import sys, optparse
    3.61  parser = optparse.OptionParser(usage=__doc__, version=pyslha.__version__)
    3.62  parser.add_option("-o", "--out", metavar="FILE",
    3.63 -                  help="write output to FILE",
    3.64 +                  help="write output to FILE (only allowed if only one input file is specified!)",
    3.65                    dest="OUTFILE", default=None)
    3.66  parser.add_option("-f", "--format", metavar="FORMAT",
    3.67                    choices=["tikz", "tikzfrag", "tikzpdf"],
    3.68 @@ -154,344 +120,400 @@
    3.69  opts.PARTICLES_LABELS_SHIFT = (opts.PARTICLES_LABELS == "shift")
    3.70  #
    3.71  if opts.DECAYS_MINBR.endswith("%"):
    3.72 -    opts.DECAYS_MINBR = float(opts.DECAYS_MINBR[:-1]) / 100
    3.73 +    opts.DECAYS_MINBR = float(opts.DECAYS_MINBR[:-1]) / 100.0
    3.74  else:
    3.75      opts.DECAYS_MINBR = float(opts.DECAYS_MINBR)
    3.76 +# print opts.DECAYS_MINBR
    3.77 +
    3.78  
    3.79  ## Check non-optional arguments
    3.80 -if len(args) != 1:
    3.81 +INFILES = args
    3.82 +if len(INFILES) == 0:
    3.83      parser.print_help()
    3.84      sys.exit(1)
    3.85 -opts.INFILE = args[0]
    3.86 +if len(INFILES) > 1 and opts.OUTFILE is not None:
    3.87 +    print "Multiple input files specified with --outfile... not a good plan! Exiting for your own good..."
    3.88 +    sys.exit(1)
    3.89  
    3.90  
    3.91 -## Choose output file
    3.92 -if opts.OUTFILE is None:
    3.93 -    import os
    3.94 -    o = os.path.basename(opts.INFILE)
    3.95 -    if o == "-":
    3.96 -        o = "out"
    3.97 -    if "." in o:
    3.98 -        o = o[:o.rindex(".")]
    3.99 -    ## Add format-specific suffix
   3.100 -    suffix = ".tex"
   3.101 -    if "pdf" in opts.FORMAT:
   3.102 -        suffix = ".pdf"
   3.103 -    opts.OUTFILE = o + suffix
   3.104 -
   3.105 -
   3.106 -## Read spectrum file
   3.107 -BLOCKS, DECAYS = None, None
   3.108 -if opts.INFILE == "-":
   3.109 -    intext = sys.stdin.read()
   3.110 -    BLOCKS, DECAYS = pyslha.readSLHA(intext)
   3.111 -elif opts.INFILE.endswith(".isa"):
   3.112 -    BLOCKS, DECAYS = pyslha.readISAWIGFile(opts.INFILE)
   3.113 -else:
   3.114 -    BLOCKS, DECAYS = pyslha.readSLHAFile(opts.INFILE)
   3.115 -
   3.116 -
   3.117 -## Set mass values in PDETAILS
   3.118 -massblock = BLOCKS["MASS"]
   3.119 -for pid in PDETAILS.keys():
   3.120 -    PDETAILS[pid].mass = abs(massblock.entries[pid])
   3.121 -
   3.122 -
   3.123 -## Decays
   3.124 -DDETAILS = {}
   3.125 -for pid, detail in sorted(PDETAILS.iteritems()):
   3.126 -    if DECAYS.has_key(pid):
   3.127 -        DDETAILS.setdefault(pid, {})
   3.128 -        xyfrom = (detail.xedges.centre, detail.mass)
   3.129 -        for d in DECAYS[pid].decays:
   3.130 -            if d.br > opts.DECAYS_MINBR:
   3.131 -                for pid2 in d.ids:
   3.132 -                    if PDETAILS.has_key(pid2):
   3.133 -                        xyto = (PDETAILS[pid2].xedges.centre, PDETAILS[pid2].mass)
   3.134 -                        DDETAILS[pid][pid2] = DecayDetails(pid, xyfrom, pid2, xyto, d.br)
   3.135 -    if DDETAILS.has_key(pid) and not DDETAILS[pid]:
   3.136 -        del DDETAILS[pid]
   3.137 -
   3.138 -
   3.139 -## Labels
   3.140 -PLABELS = []
   3.141 -if opts.PARTICLES_LABELS_SHOW:
   3.142 -    class MultiLabel(object):
   3.143 -        def __init__(self, label=None, x=None, y=None, anchor=None):
   3.144 -            self.labels = [(label, x, y)] or []
   3.145 -            self.anchor = anchor or "l"
   3.146 -
   3.147 -        def __len__(self):
   3.148 -            return len(self.labels)
   3.149 -
   3.150 -        @property
   3.151 -        def joinedlabel(self):
   3.152 -            return r",\,".join(l[0] for l in self.labels)
   3.153 -
   3.154 -        @property
   3.155 -        def avgx(self):
   3.156 -            return sum(l[1] for l in self.labels)/float(len(self))
   3.157 -        @property
   3.158 -        def minx(self):
   3.159 -            return min(l[1] for l in self.labels)/float(len(self))
   3.160 -        @property
   3.161 -        def maxx(self):
   3.162 -            return max(l[1] for l in self.labels)/float(len(self))
   3.163 -
   3.164 -        @property
   3.165 -        def avgy(self):
   3.166 -            return sum(l[2] for l in self.labels)/float(len(self))
   3.167 -        @property
   3.168 -        def miny(self):
   3.169 -            return min(l[2] for l in self.labels)/float(len(self))
   3.170 -        @property
   3.171 -        def maxy(self):
   3.172 -            return max(l[2] for l in self.labels)/float(len(self))
   3.173 -
   3.174 -        def add(self, label, x, y):
   3.175 -            self.labels.append((label, x, y))
   3.176 -            self.labels = sorted(self.labels, key=lambda l : l[2])
   3.177 -            return self
   3.178 -        def get(self):
   3.179 -            for i in self.labels:
   3.180 -                yield i
   3.181 -
   3.182 -    def rel_err(a, b):
   3.183 -        return abs((a-b)/(a+b)/2.0)
   3.184 -
   3.185 -    ## Use max mass to work out the height of a text line in mass units
   3.186 -    maxmass = None
   3.187 -    for pid, pdetail in sorted(PDETAILS.iteritems()):
   3.188 -        maxmass = max(pdetail.mass, maxmass)
   3.189 -    text_height_in_mass_units = maxmass/22.0
   3.190 -    ##
   3.191 -    ## Merge colliding labels
   3.192 -    reallabels = []
   3.193 -    for pid, pdetail in sorted(PDETAILS.iteritems()):
   3.194 -        labelx = None
   3.195 -        offset = pdetail.label.offset or 0.2
   3.196 -        anchor = None
   3.197 -        if pdetail.xedges.offset <= 0:
   3.198 -            labelx = pdetail.xedges.left - offset
   3.199 -            anchor = "r"
   3.200 -        else:
   3.201 -            labelx = pdetail.xedges.right + offset
   3.202 -            anchor = "l"
   3.203 -        labely = pdetail.mass
   3.204 -        ## Avoid hitting the 0 mass line/border
   3.205 -        if labely < 0.6*text_height_in_mass_units:
   3.206 -            labely = 0.6*text_height_in_mass_units
   3.207 -
   3.208 -        text = pdetail.label.text
   3.209 -        ## Check for collisions
   3.210 -        collision = False
   3.211 -        if opts.PARTICLES_LABELS_SHIFT or opts.PARTICLES_LABELS_MERGE:
   3.212 -            for i, rl in enumerate(reallabels):
   3.213 -                if anchor == rl.anchor and abs(labelx - rl.avgx) < 0.5:
   3.214 -                    import math
   3.215 -                    if labely > rl.miny - text_height_in_mass_units and labely < rl.maxy + text_height_in_mass_units:
   3.216 -                        reallabels[i] = rl.add(text, labelx, labely)
   3.217 -                        collision = True
   3.218 -                        break
   3.219 -        if not collision:
   3.220 -            reallabels.append(MultiLabel(text, labelx, labely, anchor))
   3.221 -    ## Calculate position shifts and fill PLABELS
   3.222 -    for rl in reallabels:
   3.223 -        if len(rl) == 1 or opts.PARTICLES_LABELS_MERGE:
   3.224 -            PLABELS.append(LabelDetails((rl.avgx, rl.avgy), rl.joinedlabel, anchor=rl.anchor))
   3.225 -        else:
   3.226 -            num_gaps = len(rl)-1
   3.227 -            yrange_old = rl.maxy - rl.miny
   3.228 -            yrange_nom = num_gaps * text_height_in_mass_units
   3.229 -            yrange = max(yrange_old, yrange_nom)
   3.230 -            ydiff = yrange - yrange_old
   3.231 -            for i, (t, x, y) in enumerate(rl.get()):
   3.232 -                ydiff_per_line = ydiff/num_gaps
   3.233 -                # TODO: Further improvement using relative or average positions?
   3.234 -                newy = y + (i - num_gaps/2.0) * ydiff_per_line
   3.235 -                PLABELS.append(LabelDetails((x, newy), t, anchor=rl.anchor))
   3.236 -
   3.237 -
   3.238 -## Function for writing out the generated source
   3.239 -def writeout(out, outfile=opts.OUTFILE):
   3.240 -    f = sys.stdout
   3.241 -    if outfile != "-":
   3.242 -        f = open(outfile, "w")
   3.243 -    f.write(out)
   3.244 -    if f is not sys.stdout:
   3.245 -        f.close()
   3.246 -
   3.247 -out = ""
   3.248 -
   3.249 -## TIKZ FORMAT
   3.250 -if "tikz" in opts.FORMAT:
   3.251 -
   3.252 -    ## Comment out the preamble etc. if only the TikZ fragment is wanted
   3.253 -    c = ""
   3.254 -    if opts.FORMAT == "tikzfrag":
   3.255 -        c = "%"
   3.256 -
   3.257 -    ## Write LaTeX header
   3.258 -    out += "%% http://pypi.python.org/pypi/pyslha\n\n"
   3.259 -    out += c + "\\documentclass[11pt]{article}\n"
   3.260 -    out += c + "\\usepackage{amsmath,amssymb}\n"
   3.261 -    out += c + "\\usepackage[margin=0cm,paperwidth=15.2cm,paperheight=9.8cm]{geometry}\n"
   3.262 -    out += c + "\\usepackage{tikz}\n"
   3.263 -    out += c + "\\pagestyle{empty}\n"
   3.264 -    out += c + "\n"
   3.265 -    ## Insert user-specified preamble file
   3.266 -    if opts.PREAMBLE is not None:
   3.267 -        out += c + "%% User-supplied preamble\n"
   3.268 -        try:
   3.269 -            fpre = open(opts.PREAMBLE, "r")
   3.270 -            for line in fpre:
   3.271 -                out += c + line
   3.272 -        except:
   3.273 -            sys.stderr.write("Could not read preamble file %s -- fallback to using \\input\n" % opts.PREAMBLE)
   3.274 -            out += c + "\\input{%s}\n" % opts.PREAMBLE.replace(".tex", "")
   3.275 +## Test for external packages
   3.276 +import subprocess
   3.277 +if opts.FORMAT == "tikzpdf":
   3.278 +    ## Test for pdflatex
   3.279 +    p = subprocess.Popen(["which", "pdflatex"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   3.280 +    rtn = p.wait()
   3.281 +    if rtn != 0:
   3.282 +        sys.stderr.write("pdflatex could not be found: tikzpdf format mode cannot work\n")
   3.283 +        sys.exit(3)
   3.284 +    ## Test for tikz package
   3.285 +    p = subprocess.Popen(["which", "kpsewhich"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   3.286 +    rtn = p.wait()
   3.287 +    if rtn != 0:
   3.288 +        sys.stderr.write("WARNING: kpsewhich could not be found: check for tikz package cannot be run\n")
   3.289      else:
   3.290 -        out += c + "%% Default preamble\n"
   3.291 -        out += c + "\\usepackage[osf]{mathpazo}\n"
   3.292 -    #
   3.293 -    out += c + "\n"
   3.294 -    out += c + "\\begin{document}\n"
   3.295 -    out += c + "\\thispagestyle{empty}\n\n"
   3.296 -
   3.297 -    ## Get coord space size: horizontal range is fixed by make-plots
   3.298 -    xmin = -3.0
   3.299 -    xmax = 19.0
   3.300 -    if opts.PARTICLES_LABELS_MERGE:
   3.301 -        ## Need more space if labels are to be merged horizontally
   3.302 -        xmin -= 1.0
   3.303 -        xmax += 1.0
   3.304 -    xdiff = xmax - xmin
   3.305 -    XWIDTH = 22.0
   3.306 -    def scalex(x):
   3.307 -        return x * XWIDTH/xdiff
   3.308 -
   3.309 -    ASPECTRATIO = 0.7 #0.618
   3.310 -    ydiff = ASPECTRATIO * XWIDTH
   3.311 -    ymin = 0.0
   3.312 -    ymax = ymin + ydiff
   3.313 -    ## Get range of masses needed
   3.314 -    maxmass = max(pd.mass for pid, pd in PDETAILS.iteritems())
   3.315 -    maxdisplaymass = maxmass * 1.1
   3.316 -    if maxdisplaymass % 100 != 0:
   3.317 -        maxdisplaymass = ((maxdisplaymass + 100) // 100) * 100
   3.318 -    yscale = (ymax-ymin)/maxdisplaymass
   3.319 -
   3.320 -    ## Write TikZ header
   3.321 -    out += "\\centering\n"
   3.322 -    out += "\\begin{tikzpicture}[scale=0.6]\n"
   3.323 -
   3.324 -    out += "  %% y-scalefactor (GeV -> coords) = %e\n\n" % yscale
   3.325 -
   3.326 -    ## Draw the plot boundary and y-ticks
   3.327 -    out += "  %% Frame\n"
   3.328 -    out += "  \\draw (%f,%f) rectangle (%f,%f);\n" % (scalex(xmin), ymin, scalex(xmax), ymax)
   3.329 -    out += "  %% y-ticks\n"
   3.330 -    for mtick in xrange(0, int(maxdisplaymass) + 100, 100):
   3.331 -        ytick = mtick * yscale
   3.332 -        out += "  \\draw (%f,%f) node[left] {%d};\n" % (scalex(xmin), ytick, mtick)
   3.333 -        if mtick > 0 and mtick < maxdisplaymass:
   3.334 -            ## The 0.3 needs to be in the plot coords
   3.335 -            out += "  \\draw (%f,%f) -- (%f,%f);\n" % (scalex(xmin+0.3), ytick, scalex(xmin), ytick)
   3.336 -    out += "  \\draw (%f,%f) node[left,rotate=90] {Mass / GeV};\n" % (scalex(xmin-2.0), ymax)
   3.337 -
   3.338 -    ## Decay arrows
   3.339 -    if DDETAILS:
   3.340 -        out += "\n  %% Decay arrows\n"
   3.341 -        for pidfrom, todict in sorted(DDETAILS.iteritems()):
   3.342 -            for pidto, dd in sorted(todict.iteritems()):
   3.343 -                out += "  %% decay_%d_%d, BR=%0.1f%%\n" % (dd.pidfrom, dd.pidto, dd.br*100)
   3.344 -
   3.345 -                def scalethickness(br):
   3.346 -                    if opts.DECAYS_STYLE == "const":
   3.347 -                        return 0.8
   3.348 -                    elif "brwidth" in opts.DECAYS_STYLE:
   3.349 -                        return 1.0 * br
   3.350 -                    else:
   3.351 -                        raise Exception("Unexpected problem with unknown decay line style option: please contact the PySLHA authors!")
   3.352 -
   3.353 -                def scalecolor(br):
   3.354 -                    if opts.DECAYS_STYLE == "const":
   3.355 -                        return None
   3.356 -                    elif "brcolor" in opts.DECAYS_STYLE:
   3.357 -                        return "black!"+str(60*dd.br + 10)
   3.358 -                    else:
   3.359 -                        raise Exception("Unexpected problem with unknown decay line style option: please contact the PySLHA authors!")
   3.360 -
   3.361 -                out += "  \\draw[-stealth,line width=%0.2fpt,dashed,color=%s] (%f,%f) -- (%f,%f);\n" % \
   3.362 -                    (scalethickness(dd.br), scalecolor(dd.br) or dd.color,
   3.363 -                     scalex(dd.xyfrom[0]), yscale*dd.xyfrom[1], scalex(dd.xyto[0]), yscale*dd.xyto[1])
   3.364 -
   3.365 -
   3.366 -    ## Draw mass lines
   3.367 -    if PDETAILS:
   3.368 -        out += "\n  %% Particle lines\n"
   3.369 -        for pid, pdetail in sorted(PDETAILS.iteritems()):
   3.370 -            y = pdetail.mass*yscale
   3.371 -            out += "  %% pid%s\n" % str(pid)
   3.372 -            out += "  \\draw[color=%s,thick] (%f,%f) -- (%f,%f);\n" % \
   3.373 -                (pdetail.color, scalex(pdetail.xedges.left), y, scalex(pdetail.xedges.right), y)
   3.374 -
   3.375 -    ## Particle labels
   3.376 -    if PLABELS:
   3.377 -        out += "\n  %% Particle labels\n"
   3.378 -        for ld in PLABELS:
   3.379 -            anchors_pstricks_tikz = { "r" : "left", "l" : "right" }
   3.380 -            out += "  \\draw (%f,%f) node[%s] {\small %s};\n" % \
   3.381 -                (scalex(ld.xy[0]), yscale*ld.xy[1], anchors_pstricks_tikz[ld.anchor], ld.texlabel)
   3.382 -
   3.383 -    ## Write TikZ footer
   3.384 -    out += "\end{tikzpicture}\n\n"
   3.385 -
   3.386 -    ## Write LaTeX footer
   3.387 -    out += c + "\end{document}\n"
   3.388 -
   3.389 -
   3.390 -    ## Write output
   3.391 -    if opts.FORMAT != "tikzpdf":
   3.392 -        writeout(out)
   3.393 -    else:
   3.394 -        ## Run LaTeX and pdfcrop
   3.395 -        import tempfile, shutil, subprocess
   3.396 -        tmpdir = tempfile.mkdtemp()
   3.397 -        writeout(out, os.path.join(tmpdir, "mytmp.tex"))
   3.398 -        ok = True
   3.399 -        ## Test for pdflatex
   3.400 -        if ok:
   3.401 -            p = subprocess.Popen(["which", "pdflatex"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   3.402 -            rtn = p.wait()
   3.403 -            if rtn != 0:
   3.404 -                sys.stderr.write("pdflatex could not be found: tikzpdf format mode cannot work\n")
   3.405 -                ok = False
   3.406 -        ## Test for tikz package
   3.407 -        if ok:
   3.408 -            p = subprocess.Popen(["which", "kpsewhich"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   3.409 -            rtn = p.wait()
   3.410 -            if rtn != 0:
   3.411 -                sys.stderr.write("WARNING: kpsewhich could not be found: check for tikz package cannot be run\n")
   3.412 -            else:
   3.413 -                p = subprocess.Popen(["kpsewhich", "tikz.sty"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   3.414 -                rtn = p.wait()
   3.415 -                if rtn != 0:
   3.416 -                    sys.stderr.write("tikz.sty could not be found: tikzpdf format mode cannot work\n")
   3.417 -                    ok = False
   3.418 -        try:
   3.419 -            p = subprocess.Popen(["pdflatex", "\scrollmode\input", "mytmp.tex"],
   3.420 -                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=tmpdir)
   3.421 -            p.wait()
   3.422 -            shutil.copyfile(os.path.join(tmpdir, "mytmp.pdf"), opts.OUTFILE)
   3.423 -        except Exception, e:
   3.424 -            sys.stderr.write("pdflatex could not be run: tikzpdf format mode cannot work\n")
   3.425 -            ok = False
   3.426 -        shutil.rmtree(tmpdir)
   3.427 -        if not ok:
   3.428 +        p = subprocess.Popen(["kpsewhich", "tikz.sty"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
   3.429 +        rtn = p.wait()
   3.430 +        if rtn != 0:
   3.431 +            sys.stderr.write("tikz.sty could not be found: tikzpdf format mode cannot work\n")
   3.432              sys.exit(3)
   3.433  
   3.434  
   3.435 -## UNRECOGNISED FORMAT!
   3.436 -else:
   3.437 -    print "Other formats not currently supported! How did we even get here?!"
   3.438 -    sys.exit(2)
   3.439 +## Loop over input spectrum files
   3.440 +for infile in INFILES:
   3.441 +
   3.442 +    ## Choose output file
   3.443 +    outfile = opts.OUTFILE
   3.444 +    if outfile is None:
   3.445 +        import os
   3.446 +        o = os.path.basename(infile)
   3.447 +        if o == "-":
   3.448 +            o = "out"
   3.449 +        if "." in o:
   3.450 +            o = o[:o.rindex(".")]
   3.451 +        ## Add format-specific suffix
   3.452 +        suffix = ".tex"
   3.453 +        if "pdf" in opts.FORMAT:
   3.454 +            suffix = ".pdf"
   3.455 +        # TODO: add EPS and PNG support
   3.456 +        outfile = o + suffix
   3.457 +
   3.458 +
   3.459 +    ## Info for the user
   3.460 +    print "Plotting %s -> %s" % (infile, outfile)
   3.461 +
   3.462 +
   3.463 +    ## Read spectrum file
   3.464 +    BLOCKS, DECAYS = None, None
   3.465 +    # print BLOCKS
   3.466 +    if infile == "-":
   3.467 +        intext = sys.stdin.read()
   3.468 +        BLOCKS, DECAYS = pyslha.readSLHA(intext)
   3.469 +    elif infile.endswith(".isa"):
   3.470 +        BLOCKS, DECAYS = pyslha.readISAWIGFile(infile)
   3.471 +    else:
   3.472 +        BLOCKS, DECAYS = pyslha.readSLHAFile(infile)
   3.473 +    # print BLOCKS
   3.474 +
   3.475 +
   3.476 +    ## Define particle rendering details (may be adapted based on input file, so it *really*
   3.477 +    ## does need to be redefined in each loop over spectrum files!)
   3.478 +    XHIGGS = 0.0
   3.479 +    XSLEPTON = 5.0
   3.480 +    XGAUGINO = 10.0
   3.481 +    XSUSYQCD = 15.0
   3.482 +    PDETAILS = {
   3.483 +        25 : ParticleDetails(Label(r"$h^0$"), XHIGGS, -0.2, color="blue"),
   3.484 +        35 : ParticleDetails(Label(r"$H^0$"), XHIGGS, -0.2, color="blue"),
   3.485 +        36 : ParticleDetails(Label(r"$A^0$"), XHIGGS, -0.2, color="blue"),
   3.486 +        37 : ParticleDetails(Label(r"$H^\pm$"), XHIGGS, 0.2, color="red"),
   3.487 +        1000011 : ParticleDetails(Label(r"$\tilde{\ell}_\text{L}$"), XSLEPTON, -0.2, color="blue"),
   3.488 +        2000011 : ParticleDetails(Label(r"$\tilde{\ell}_\text{R}$"), XSLEPTON, -0.2, color="blue"),
   3.489 +        1000015 : ParticleDetails(Label(r"$\tilde{\tau}_1$"), XSLEPTON, 0.2, color="red"),
   3.490 +        2000015 : ParticleDetails(Label(r"$\tilde{\tau}_2$"), XSLEPTON, 0.2, color="red"),
   3.491 +        1000012 : ParticleDetails(Label(r"$\tilde{\nu}_\text{L}$"), XSLEPTON, -0.2, color="blue"),
   3.492 +        1000016 : ParticleDetails(Label(r"$\tilde{\nu}_\tau$"), XSLEPTON, 0.2, color="red"),
   3.493 +        1000022 : ParticleDetails(Label(r"$\tilde{\chi}_1^0$"), XGAUGINO, -0.2, color="blue"),
   3.494 +        1000023 : ParticleDetails(Label(r"$\tilde{\chi}_2^0$"), XGAUGINO, -0.2, color="blue"),
   3.495 +        1000025 : ParticleDetails(Label(r"$\tilde{\chi}_3^0$"), XGAUGINO, -0.2, color="blue"),
   3.496 +        1000035 : ParticleDetails(Label(r"$\tilde{\chi}_4^0$"), XGAUGINO, -0.2, color="blue"),
   3.497 +        1000024 : ParticleDetails(Label(r"$\tilde{\chi}_1^\pm$"), XGAUGINO, 0.2, color="red"),
   3.498 +        1000037 : ParticleDetails(Label(r"$\tilde{\chi}_2^\pm$"), XGAUGINO, 0.2, color="red"),
   3.499 +        1000039 : ParticleDetails(Label(r"$\tilde{G}$"), XGAUGINO,  0.15, color="black!50!blue!30!green"),
   3.500 +        1000021 : ParticleDetails(Label(r"$\tilde{g}$"), XSUSYQCD, -0.3, color="black!50!blue!30!green"),
   3.501 +        1000001 : ParticleDetails(Label(r"$\tilde{q}_\text{L}$"), XSUSYQCD, -0.1, color="blue"),
   3.502 +        2000001 : ParticleDetails(Label(r"$\tilde{q}_\text{R}$"), XSUSYQCD, -0.1, color="blue"),
   3.503 +        1000005 : ParticleDetails(Label(r"$\tilde{b}_1$"), XSUSYQCD, 0.2, color="black!50!blue!30!green"),
   3.504 +        2000005 : ParticleDetails(Label(r"$\tilde{b}_2$"), XSUSYQCD, 0.2, color="black!50!blue!30!green"),
   3.505 +        1000006 : ParticleDetails(Label(r"$\tilde{t}_1$"), XSUSYQCD, 0.2, color="red"),
   3.506 +        2000006 : ParticleDetails(Label(r"$\tilde{t}_2$"), XSUSYQCD, 0.2, color="red")
   3.507 +    }
   3.508 +
   3.509 +
   3.510 +    ## Set mass values in PDETAILS
   3.511 +    massblock = BLOCKS["MASS"]
   3.512 +    for pid in PDETAILS.keys():
   3.513 +        if massblock.entries.has_key(pid):
   3.514 +            PDETAILS[pid].mass = abs(massblock.entries[pid])
   3.515 +        else:
   3.516 +            del PDETAILS[pid]
   3.517 +
   3.518 +
   3.519 +    ## Decays
   3.520 +    DDETAILS = {}
   3.521 +    for pid, detail in sorted(PDETAILS.iteritems()):
   3.522 +        if DECAYS.has_key(pid):
   3.523 +            DDETAILS.setdefault(pid, {})
   3.524 +            xyfrom = (detail.xedges.centre, detail.mass)
   3.525 +            for d in DECAYS[pid].decays:
   3.526 +                if d.br > opts.DECAYS_MINBR:
   3.527 +                    for pid2 in d.ids:
   3.528 +                        if PDETAILS.has_key(pid2):
   3.529 +                            xyto = (PDETAILS[pid2].xedges.centre, PDETAILS[pid2].mass)
   3.530 +                            DDETAILS[pid][pid2] = DecayDetails(pid, xyfrom, pid2, xyto, d.br)
   3.531 +        if DDETAILS.has_key(pid) and not DDETAILS[pid]:
   3.532 +            del DDETAILS[pid]
   3.533 +
   3.534 +
   3.535 +    ## Labels
   3.536 +    PLABELS = []
   3.537 +    if opts.PARTICLES_LABELS_SHOW:
   3.538 +        class MultiLabel(object):
   3.539 +            def __init__(self, label=None, x=None, y=None, anchor=None):
   3.540 +                self.labels = [(label, x, y)] or []
   3.541 +                self.anchor = anchor or "l"
   3.542 +
   3.543 +            def __len__(self):
   3.544 +                return len(self.labels)
   3.545 +
   3.546 +            @property
   3.547 +            def joinedlabel(self):
   3.548 +                return r",\,".join(l[0] for l in self.labels)
   3.549 +
   3.550 +            @property
   3.551 +            def avgx(self):
   3.552 +                return sum(l[1] for l in self.labels)/float(len(self))
   3.553 +            @property
   3.554 +            def minx(self):
   3.555 +                return min(l[1] for l in self.labels)/float(len(self))
   3.556 +            @property
   3.557 +            def maxx(self):
   3.558 +                return max(l[1] for l in self.labels)/float(len(self))
   3.559 +
   3.560 +            @property
   3.561 +            def avgy(self):
   3.562 +                return sum(l[2] for l in self.labels)/float(len(self))
   3.563 +            @property
   3.564 +            def miny(self):
   3.565 +                return min(l[2] for l in self.labels)/float(len(self))
   3.566 +            @property
   3.567 +            def maxy(self):
   3.568 +                return max(l[2] for l in self.labels)/float(len(self))
   3.569 +
   3.570 +            def add(self, label, x, y):
   3.571 +                self.labels.append((label, x, y))
   3.572 +                self.labels = sorted(self.labels, key=lambda l : l[2])
   3.573 +                return self
   3.574 +            def get(self):
   3.575 +                for i in self.labels:
   3.576 +                    yield i
   3.577 +
   3.578 +        def rel_err(a, b):
   3.579 +            return abs((a-b)/(a+b)/2.0)
   3.580 +
   3.581 +        ## Use max mass to work out the height of a text line in mass units
   3.582 +        maxmass = None
   3.583 +        for pid, pdetail in sorted(PDETAILS.iteritems()):
   3.584 +            maxmass = max(pdetail.mass, maxmass)
   3.585 +        text_height_in_mass_units = maxmass/22.0
   3.586 +        ##
   3.587 +        ## Merge colliding labels
   3.588 +        reallabels = []
   3.589 +        for pid, pdetail in sorted(PDETAILS.iteritems()):
   3.590 +            labelx = None
   3.591 +            offset = pdetail.label.offset or 0.2
   3.592 +            anchor = None
   3.593 +            if pdetail.xedges.offset <= 0:
   3.594 +                labelx = pdetail.xedges.left - offset
   3.595 +                anchor = "r"
   3.596 +            else:
   3.597 +                labelx = pdetail.xedges.right + offset
   3.598 +                anchor = "l"
   3.599 +            labely = pdetail.mass
   3.600 +            ## Avoid hitting the 0 mass line/border
   3.601 +            if labely < 0.6*text_height_in_mass_units:
   3.602 +                labely = 0.6*text_height_in_mass_units
   3.603 +
   3.604 +            text = pdetail.label.text
   3.605 +            ## Check for collisions
   3.606 +            collision = False
   3.607 +            if opts.PARTICLES_LABELS_SHIFT or opts.PARTICLES_LABELS_MERGE:
   3.608 +                for i, rl in enumerate(reallabels):
   3.609 +                    if anchor == rl.anchor and abs(labelx - rl.avgx) < 0.5:
   3.610 +                        import math
   3.611 +                        if labely > rl.miny - text_height_in_mass_units and labely < rl.maxy + text_height_in_mass_units:
   3.612 +                            reallabels[i] = rl.add(text, labelx, labely)
   3.613 +                            collision = True
   3.614 +                            break
   3.615 +            if not collision:
   3.616 +                reallabels.append(MultiLabel(text, labelx, labely, anchor))
   3.617 +        ## Calculate position shifts and fill PLABELS
   3.618 +        for rl in reallabels:
   3.619 +            if len(rl) == 1 or opts.PARTICLES_LABELS_MERGE:
   3.620 +                PLABELS.append(LabelDetails((rl.avgx, rl.avgy), rl.joinedlabel, anchor=rl.anchor))
   3.621 +            else:
   3.622 +                num_gaps = len(rl)-1
   3.623 +                yrange_old = rl.maxy - rl.miny
   3.624 +                yrange_nom = num_gaps * text_height_in_mass_units
   3.625 +                yrange = max(yrange_old, yrange_nom)
   3.626 +                ydiff = yrange - yrange_old
   3.627 +                for i, (t, x, y) in enumerate(rl.get()):
   3.628 +                    ydiff_per_line = ydiff/num_gaps
   3.629 +                    # TODO: Further improvement using relative or average positions?
   3.630 +                    newy = y + (i - num_gaps/2.0) * ydiff_per_line
   3.631 +                    PLABELS.append(LabelDetails((x, newy), t, anchor=rl.anchor))
   3.632 +
   3.633 +
   3.634 +    ## Function for writing out the generated source
   3.635 +    def writeout(out, outfile):
   3.636 +        f = sys.stdout
   3.637 +        if outfile != "-":
   3.638 +            f = open(outfile, "w")
   3.639 +        f.write(out)
   3.640 +        if f is not sys.stdout:
   3.641 +            f.close()
   3.642 +
   3.643 +    out = ""
   3.644 +
   3.645 +    ## TIKZ FORMAT
   3.646 +    if "tikz" in opts.FORMAT:
   3.647 +
   3.648 +        ## Comment out the preamble etc. if only the TikZ fragment is wanted
   3.649 +        c = ""
   3.650 +        if opts.FORMAT == "tikzfrag":
   3.651 +            c = "%"
   3.652 +
   3.653 +        ## Write LaTeX header
   3.654 +        out += "%% http://pypi.python.org/pypi/pyslha\n\n"
   3.655 +        out += c + "\\documentclass[11pt]{article}\n"
   3.656 +        out += c + "\\usepackage{amsmath,amssymb}\n"
   3.657 +        out += c + "\\usepackage[margin=0cm,paperwidth=15.2cm,paperheight=9.8cm]{geometry}\n"
   3.658 +        out += c + "\\usepackage{tikz}\n"
   3.659 +        out += c + "\\pagestyle{empty}\n"
   3.660 +        out += c + "\n"
   3.661 +        ## Insert user-specified preamble file
   3.662 +        if opts.PREAMBLE is not None:
   3.663 +            out += c + "%% User-supplied preamble\n"
   3.664 +            try:
   3.665 +                fpre = open(opts.PREAMBLE, "r")
   3.666 +                for line in fpre:
   3.667 +                    out += c + line
   3.668 +            except:
   3.669 +                sys.stderr.write("Could not read preamble file %s -- fallback to using \\input\n" % opts.PREAMBLE)
   3.670 +                out += c + "\\input{%s}\n" % opts.PREAMBLE.replace(".tex", "")
   3.671 +        else:
   3.672 +            out += c + "%% Default preamble\n"
   3.673 +            out += c + "\\usepackage[osf]{mathpazo}\n"
   3.674 +        #
   3.675 +        out += c + "\n"
   3.676 +        out += c + "\\begin{document}\n"
   3.677 +        out += c + "\\thispagestyle{empty}\n\n"
   3.678 +
   3.679 +        ## Get coord space size: horizontal range is fixed by make-plots
   3.680 +        xmin = -3.0
   3.681 +        xmax = 19.0
   3.682 +        if opts.PARTICLES_LABELS_MERGE:
   3.683 +            ## Need more space if labels are to be merged horizontally
   3.684 +            xmin -= 1.0
   3.685 +            xmax += 1.0
   3.686 +        xdiff = xmax - xmin
   3.687 +        XWIDTH = 22.0
   3.688 +        def scalex(x):
   3.689 +            return x * XWIDTH/xdiff
   3.690 +
   3.691 +        ASPECTRATIO = 0.7 #0.618
   3.692 +        ydiff = ASPECTRATIO * XWIDTH
   3.693 +        ymin = 0.0
   3.694 +        ymax = ymin + ydiff
   3.695 +        ## Get range of masses needed
   3.696 +        maxmass = max(pd.mass for pid, pd in PDETAILS.iteritems())
   3.697 +        maxdisplaymass = maxmass * 1.1
   3.698 +        if maxdisplaymass % 100 != 0:
   3.699 +            maxdisplaymass = ((maxdisplaymass + 100) // 100) * 100
   3.700 +        yscale = (ymax-ymin)/maxdisplaymass
   3.701 +
   3.702 +        ## Write TikZ header
   3.703 +        out += "\\centering\n"
   3.704 +        out += "\\begin{tikzpicture}[scale=0.6]\n"
   3.705 +
   3.706 +        out += "  %% y-scalefactor (GeV -> coords) = %e\n\n" % yscale
   3.707 +
   3.708 +        ## Draw the plot boundary and y-ticks
   3.709 +        out += "  %% Frame\n"
   3.710 +        out += "  \\draw (%f,%f) rectangle (%f,%f);\n" % (scalex(xmin), ymin, scalex(xmax), ymax)
   3.711 +        out += "  %% y-ticks\n"
   3.712 +        for mtick in xrange(0, int(maxdisplaymass) + 100, 100):
   3.713 +            ytick = mtick * yscale
   3.714 +            out += "  \\draw (%f,%f) node[left] {%d};\n" % (scalex(xmin), ytick, mtick)
   3.715 +            if mtick > 0 and mtick < maxdisplaymass:
   3.716 +                ## The 0.3 needs to be in the plot coords
   3.717 +                out += "  \\draw (%f,%f) -- (%f,%f);\n" % (scalex(xmin+0.3), ytick, scalex(xmin), ytick)
   3.718 +        out += "  \\draw (%f,%f) node[left,rotate=90] {Mass / GeV};\n" % (scalex(xmin-2.0), ymax)
   3.719 +
   3.720 +        ## Decay arrows
   3.721 +        if DDETAILS:
   3.722 +            out += "\n  %% Decay arrows\n"
   3.723 +            for pidfrom, todict in sorted(DDETAILS.iteritems()):
   3.724 +                for pidto, dd in sorted(todict.iteritems()):
   3.725 +                    out += "  %% decay_%d_%d, BR=%0.1f%%\n" % (dd.pidfrom, dd.pidto, dd.br*100)
   3.726 +
   3.727 +                    def scalethickness(br):
   3.728 +                        if opts.DECAYS_STYLE == "const":
   3.729 +                            return 0.8
   3.730 +                        elif "brwidth" in opts.DECAYS_STYLE:
   3.731 +                            return 1.0 * br
   3.732 +                        else:
   3.733 +                            raise Exception("Unexpected problem with unknown decay line style option: please contact the PySLHA authors!")
   3.734 +
   3.735 +                    def scalecolor(br):
   3.736 +                        if opts.DECAYS_STYLE == "const":
   3.737 +                            return None
   3.738 +                        elif "brcolor" in opts.DECAYS_STYLE:
   3.739 +                            return "black!"+str(60*dd.br + 10)
   3.740 +                        else:
   3.741 +                            raise Exception("Unexpected problem with unknown decay line style option: please contact the PySLHA authors!")
   3.742 +
   3.743 +                    out += "  \\draw[-stealth,line width=%0.2fpt,dashed,color=%s] (%f,%f) -- (%f,%f);\n" % \
   3.744 +                        (scalethickness(dd.br), scalecolor(dd.br) or dd.color,
   3.745 +                         scalex(dd.xyfrom[0]), yscale*dd.xyfrom[1], scalex(dd.xyto[0]), yscale*dd.xyto[1])
   3.746 +
   3.747 +
   3.748 +        ## Draw mass lines
   3.749 +        if PDETAILS:
   3.750 +            out += "\n  %% Particle lines\n"
   3.751 +            for pid, pdetail in sorted(PDETAILS.iteritems()):
   3.752 +                y = pdetail.mass*yscale
   3.753 +                out += "  %% pid%s\n" % str(pid)
   3.754 +                out += "  \\draw[color=%s,thick] (%f,%f) -- (%f,%f);\n" % \
   3.755 +                    (pdetail.color, scalex(pdetail.xedges.left), y, scalex(pdetail.xedges.right), y)
   3.756 +
   3.757 +        ## Particle labels
   3.758 +        if PLABELS:
   3.759 +            out += "\n  %% Particle labels\n"
   3.760 +            for ld in PLABELS:
   3.761 +                anchors_pstricks_tikz = { "r" : "left", "l" : "right" }
   3.762 +                out += "  \\draw (%f,%f) node[%s] {\small %s};\n" % \
   3.763 +                    (scalex(ld.xy[0]), yscale*ld.xy[1], anchors_pstricks_tikz[ld.anchor], ld.texlabel)
   3.764 +
   3.765 +        ## Write TikZ footer
   3.766 +        out += "\end{tikzpicture}\n\n"
   3.767 +
   3.768 +        ## Write LaTeX footer
   3.769 +        out += c + "\end{document}\n"
   3.770 +
   3.771 +
   3.772 +        ## Write output
   3.773 +        if opts.FORMAT != "tikzpdf":
   3.774 +            writeout(out, outfile)
   3.775 +        else:
   3.776 +            ## Run LaTeX and pdfcrop
   3.777 +            import tempfile, shutil, subprocess
   3.778 +            tmpdir = tempfile.mkdtemp()
   3.779 +            writeout(out, os.path.join(tmpdir, "mytmp.tex"))
   3.780 +            ok = True
   3.781 +            try:
   3.782 +                p = subprocess.Popen(["pdflatex", "\scrollmode\input", "mytmp.tex"],
   3.783 +                                     stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=tmpdir)
   3.784 +                p.wait()
   3.785 +                shutil.copyfile(os.path.join(tmpdir, "mytmp.pdf"), outfile)
   3.786 +            except Exception, e:
   3.787 +                sys.stderr.write("pdflatex could not be run: tikzpdf format mode cannot work\n")
   3.788 +                ok = False
   3.789 +            shutil.rmtree(tmpdir)
   3.790 +            if not ok:
   3.791 +                sys.exit(3)
   3.792 +
   3.793 +
   3.794 +    ## UNRECOGNISED FORMAT!
   3.795 +    else:
   3.796 +        print "Other formats not currently supported! How did we even get here?!"
   3.797 +        sys.exit(2)
     4.1 --- a/spcfiles/SPheno.spc	Sat Feb 26 23:30:18 2011 +0100
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,572 +0,0 @@
     4.4 -# SUSY Les Houches Accord 1.0 - MSSM spectrum + Decays
     4.5 -# SPheno 2.2.0
     4.6 -# W. Porod, Comput. Phys. Commun. 153 (2003) 275-315, hep-ph/0301101
     4.7 -# in case of problems send email to porod@physik.unizh.ch
     4.8 -Block SPINFO         # Program information
     4.9 -    1    SPheno      # spectrum calculator
    4.10 -    2    2.2.0       # version number
    4.11 -#
    4.12 -Block MODSEL  # Model selection
    4.13 -    1    1    # mSUGRA model
    4.14 -Block MINPAR  # Input parameters
    4.15 -    1    1.00000000E+02  # m0      
    4.16 -    2    2.50000000E+02  # m12     
    4.17 -    3    1.00000000E+01  # tanb at m_Z   
    4.18 -    4    1.00000000E+00  # Sign(mu)
    4.19 -    5   -1.00000000E+02  # A0
    4.20 -#
    4.21 -Block SMINPUTS  # SM parameters
    4.22 -         2     1.16639000E-05  # G_mu [GeV^-2]
    4.23 -         3     1.19000000E-01  # alpha_s(MZ)^MSbar
    4.24 -         4     9.11870000E+01  # m_Z(pole)
    4.25 -         5     4.20000000E+00  # m_b(m_b), MSbar
    4.26 -         6     1.74300000E+02  # m_t(pole)
    4.27 -         7     1.77710000E+00  # m_tau(pole)
    4.28 -Block MASS  # Mass spectrum
    4.29 -#   PDG code      mass          particle
    4.30 -        24     8.04710607E+01  # W+
    4.31 -        25     1.10815190E+02  # h0
    4.32 -        35     4.01492499E+02  # H0
    4.33 -        36     4.01118284E+02  # A0
    4.34 -        37     4.10078479E+02  # H+
    4.35 -   1000001     5.74946186E+02  # ~d_L
    4.36 -   2000001     5.51815314E+02  # ~d_R
    4.37 -   1000002     5.69582751E+02  # ~u_L
    4.38 -   2000002     5.52071290E+02  # ~u_R
    4.39 -   1000003     5.74946518E+02  # ~s_L
    4.40 -   2000003     5.51811080E+02  # ~s_R
    4.41 -   1000004     5.69590914E+02  # ~c_L
    4.42 -   2000004     5.52059796E+02  # ~c_R
    4.43 -   1000005     5.19519031E+02  # ~b_1
    4.44 -   2000005     5.51583167E+02  # ~b_2
    4.45 -   1000006     4.03078494E+02  # ~t_1
    4.46 -   2000006     5.90847519E+02  # ~t_2
    4.47 -   1000011     2.07119235E+02  # ~e_L-
    4.48 -   2000011     1.43941259E+02  # ~e_R-
    4.49 -   1000012     1.91275156E+02  # ~nu_eL
    4.50 -   1000013     2.07133622E+02  # ~mu_L-
    4.51 -   2000013     1.43907622E+02  # ~mu_R-
    4.52 -   1000014     1.91271992E+02  # ~nu_muL
    4.53 -   1000015     1.34783220E+02  # ~tau_1-
    4.54 -   2000015     2.10711271E+02  # ~tau_2-
    4.55 -   1000016     1.90379541E+02  # ~nu_tauL
    4.56 -   1000021     6.09695224E+02  # ~g
    4.57 -   1000022     9.70853366E+01  # ~chi_10
    4.58 -   1000023     1.80744655E+02  # ~chi_20
    4.59 -   1000025    -3.66356414E+02  # ~chi_30
    4.60 -   1000035     3.83439955E+02  # ~chi_40
    4.61 -   1000024     1.79757700E+02  # ~chi_1+
    4.62 -   1000037     3.83813449E+02  # ~chi_2+
    4.63 -# Higgs mixing
    4.64 -Block alpha # Effective Higgs mixing angle
    4.65 -          -1.13890146E-01   # alpha
    4.66 -Block hmix Q=  4.88003947E+02  # Higgs mixing parameters
    4.67 -   1    3.59041048E+02  # mu
    4.68 -Block stopmix  # stop mixing matrix
    4.69 -   1  1     5.54738852E-01   # R_st(1,1)
    4.70 -   1  2     8.32024523E-01   # R_st(1,2)
    4.71 -   2  1    -8.32024523E-01   # R_st(2,1)
    4.72 -   2  2     5.54738852E-01   # R_st(2,2)
    4.73 -Block sbotmix  # sbottom mixing matrix
    4.74 -   1  1     9.49303532E-01   # R_sb(1,1)
    4.75 -   1  2     3.14360946E-01   # R_sb(1,2)
    4.76 -   2  1    -3.14360946E-01   # R_sb(2,1)
    4.77 -   2  2     9.49303532E-01   # R_sb(2,2)
    4.78 -Block staumix  # stau mixing matrix
    4.79 -   1  1     2.65243805E-01   # R_sta(1,1)
    4.80 -   1  2     9.64181375E-01   # R_sta(1,2)
    4.81 -   2  1    -9.64181375E-01   # R_sta(2,1)
    4.82 -   2  2     2.65243805E-01   # R_sta(2,2)
    4.83 -Block nmix  # neutralino mixing matrix
    4.84 -   1  1    -9.85966424E-01   # N(1,1)  
    4.85 -   1  2     5.56523681E-02   # N(1,2)  
    4.86 -   1  3    -1.47868555E-01   # N(1,3)  
    4.87 -   1  4     5.39250873E-02   # N(1,4)  
    4.88 -   2  1     1.02758152E-01   # N(2,1)  
    4.89 -   2  2     9.43655959E-01   # N(2,2)  
    4.90 -   2  3    -2.73066541E-01   # N(2,3)  
    4.91 -   2  4     1.56169324E-01   # N(2,4)  
    4.92 -   3  1    -6.02609458E-02   # N(3,1)  
    4.93 -   3  2     9.00096646E-02   # N(3,2)  
    4.94 -   3  3     6.94930331E-01   # N(3,3)  
    4.95 -   3  4     7.10871798E-01   # N(3,4)  
    4.96 -   4  1    -1.16959785E-01   # N(4,1)  
    4.97 -   4  2     3.13551440E-01   # N(4,2)  
    4.98 -   4  3     6.48568724E-01   # N(4,3)  
    4.99 -   4  4    -6.83640632E-01   # N(4,4)  
   4.100 -Block Umix  # chargino U mixing matrix
   4.101 -   1  1    -9.19120288E-01   # U(1,1)
   4.102 -   1  2     3.93977026E-01   # U(1,2)
   4.103 -   2  1     3.93977026E-01   # U(2,1)
   4.104 -   2  2     9.19120288E-01   # U(2,2)
   4.105 -Block Vmix  # chargino V mixing matrix
   4.106 -   1  1    -9.71811327E-01   # V(1,1)
   4.107 -   1  2     2.35759932E-01   # V(1,2)
   4.108 -   2  1     2.35759932E-01   # V(2,1)
   4.109 -   2  2     9.71811327E-01   # V(2,2)
   4.110 -Block gauge Q=  4.88003947E+02  # (SUSY scale)
   4.111 -   1    3.61202491E-01  # g'(Q)^DRbar
   4.112 -   2    6.46571777E-01  # g(Q)^DRbar
   4.113 -   3    1.10127233E+00  # g3(Q)^DRbar
   4.114 -Block au Q=  4.88003947E+02  # (SUSY scale)
   4.115 -  1  1    -6.87802025E+02   # A_u(Q)^DRbar
   4.116 -  2  2    -6.87798454E+02   # A_c(Q)^DRbar
   4.117 -  3  3    -5.05756580E+02   # A_t(Q)^DRbar
   4.118 -Block ad Q=  4.88003947E+02  # (SUSY scale)
   4.119 -  1  1    -8.62245447E+02   # A_d(Q)^DRbar
   4.120 -  2  2    -8.62242112E+02   # A_s(Q)^DRbar
   4.121 -  3  3    -7.98533802E+02   # A_b(Q)^DRbar
   4.122 -Block ae Q=  4.88003947E+02  # (SUSY scale)
   4.123 -  1  1    -2.53428785E+02   # A_e(Q)^DRbar
   4.124 -  2  2    -2.53422690E+02   # A_mu(Q)^DRbar
   4.125 -  3  3    -2.51704068E+02   # A_tau(Q)^DRbar
   4.126 -Block yu Q=  4.88003947E+02  # (SUSY scale)
   4.127 -  1  1     8.66543595E-06   # Y_u(Q)^DRbar
   4.128 -  2  2     3.46617421E-03   # Y_c(Q)^DRbar
   4.129 -  3  3     8.89078455E-01   # Y_t(Q)^DRbar
   4.130 -Block yd Q=  4.88003947E+02  # (SUSY scale)
   4.131 -  1  1     1.87982345E-04   # Y_d(Q)^DRbar
   4.132 -  2  2     3.22224580E-03   # Y_s(Q)^DRbar
   4.133 -  3  3     1.35509998E-01   # Y_b(Q)^DRbar
   4.134 -Block ye Q=  4.88003947E+02  # (SUSY scale)
   4.135 -  1  1     2.88460619E-05   # Y_e(Q)^DRbar
   4.136 -  2  2     5.96450031E-03   # Y_mu(Q)^DRbar
   4.137 -  3  3     1.00344333E-01   # Y_tau(Q)^DRbar
   4.138 -DECAY   2000011     2.15818610E-01   # ~e_R-
   4.139 -#    BR                NDA      ID1      ID2
   4.140 -     1.00000000E+00    2     1000022        11   # BR(~e_R- -> chi_10 e- )
   4.141 -DECAY   1000011     2.66257726E-01   # ~e_L-
   4.142 -#    BR                NDA      ID1      ID2
   4.143 -     4.82868508E-01    2     1000022        11   # BR(~e_L- -> chi_10 e- )
   4.144 -     1.84340614E-01    2     1000023        11   # BR(~e_L- -> chi_20 e- )
   4.145 -     3.32790878E-01    2    -1000024        12   # BR(~e_L- -> chi_1- nu_e )
   4.146 -DECAY   2000013     2.15556525E-01   # ~mu_R-
   4.147 -#    BR                NDA      ID1      ID2
   4.148 -     1.00000000E+00    2     1000022        13   # BR(~mu_R- -> chi_10 mu- )
   4.149 -DECAY   1000013     2.66478859E-01   # ~mu_L-
   4.150 -#    BR                NDA      ID1      ID2
   4.151 -     4.83057881E-01    2     1000022        13   # BR(~mu_L- -> chi_10 mu- )
   4.152 -     1.84277125E-01    2     1000023        13   # BR(~mu_L- -> chi_20 mu- )
   4.153 -     3.32664994E-01    2    -1000024        14   # BR(~mu_L- -> chi_1- nu_mu )
   4.154 -DECAY   1000015     1.50942748E-01   # ~tau_1-
   4.155 -#    BR                NDA      ID1      ID2
   4.156 -     1.00000000E+00    2     1000022        15   # BR(~tau_1- -> chi_10 tau- )
   4.157 -DECAY   2000015     3.17256973E-01   # ~tau_2-
   4.158 -#    BR                NDA      ID1      ID2
   4.159 -     5.17060568E-01    2     1000022        15   # BR(~tau_2- -> chi_10 tau- )
   4.160 -     1.73123943E-01    2     1000023        15   # BR(~tau_2- -> chi_20 tau- )
   4.161 -     3.09815489E-01    2    -1000024        16   # BR(~tau_2- -> chi_1- nu_tau )
   4.162 -DECAY   1000012     1.88885959E-01   # ~nu_eL
   4.163 -#    BR                NDA      ID1      ID2
   4.164 -     8.53562012E-01    2     1000022        12   # BR(~nu_eL -> chi_10 nu_e )
   4.165 -     3.79229237E-02    2     1000023        12   # BR(~nu_eL -> chi_20 nu_e )
   4.166 -     1.08515065E-01    2     1000024        11   # BR(~nu_eL -> chi_1+ e- )
   4.167 -DECAY   1000014     1.88862937E-01   # ~nu_muL
   4.168 -#    BR                NDA      ID1      ID2
   4.169 -     8.53632339E-01    2     1000022        14   # BR(~nu_muL -> chi_10 nu_mu )
   4.170 -     3.79059981E-02    2     1000023        14   # BR(~nu_muL -> chi_20 nu_mu )
   4.171 -     1.08461663E-01    2     1000024        13   # BR(~nu_muL -> chi_1+ mu- )
   4.172 -DECAY   1000016     1.82521433E-01   # ~nu_tauL
   4.173 -#    BR                NDA      ID1      ID2
   4.174 -     8.73444304E-01    2     1000022        16   # BR(~nu_tauL -> chi_10 nu_tau )
   4.175 -     3.31591969E-02    2     1000023        16   # BR(~nu_tauL -> chi_20 nu_tau )
   4.176 -     9.33964988E-02    2     1000024        15   # BR(~nu_tauL -> chi_1+ tau- )
   4.177 -DECAY   2000001     2.94759865E-01   # ~d_R
   4.178 -#    BR                NDA      ID1      ID2
   4.179 -     9.85728730E-01    2     1000022         1   # BR(~d_R -> chi_10 d )
   4.180 -     9.08916189E-03    2     1000023         1   # BR(~d_R -> chi_20 d )
   4.181 -     1.22637235E-03    2     1000025         1   # BR(~d_R -> chi_30 d )
   4.182 -     3.95055479E-03    2     1000035         1   # BR(~d_R -> chi_40 d )
   4.183 -     5.17432078E-06    2    -1000024         2   # BR(~d_R -> chi_1- u )
   4.184 -     6.59913646E-09    2    -1000037         2   # BR(~d_R -> chi_2- u )
   4.185 -DECAY   1000001     5.39683789E+00   # ~d_L
   4.186 -#    BR                NDA      ID1      ID2
   4.187 -     2.39337424E-02    2     1000022         1   # BR(~d_L -> chi_10 d )
   4.188 -     3.07518256E-01    2     1000023         1   # BR(~d_L -> chi_20 d )
   4.189 -     1.60173314E-03    2     1000025         1   # BR(~d_L -> chi_30 d )
   4.190 -     1.53570422E-02    2     1000035         1   # BR(~d_L -> chi_40 d )
   4.191 -     6.09324866E-01    2    -1000024         2   # BR(~d_L -> chi_1- u )
   4.192 -     4.22643600E-02    2    -1000037         2   # BR(~d_L -> chi_2- u )
   4.193 -DECAY   2000003     2.95445003E-01   # ~s_R
   4.194 -#    BR                NDA      ID1      ID2
   4.195 -     9.83476368E-01    2     1000022         3   # BR(~s_R -> chi_10 s )
   4.196 -     9.81456784E-03    2     1000023         3   # BR(~s_R -> chi_20 s )
   4.197 -     1.25464395E-03    2     1000025         3   # BR(~s_R -> chi_30 s )
   4.198 -     3.93610639E-03    2     1000035         3   # BR(~s_R -> chi_40 s )
   4.199 -     1.51636819E-03    2    -1000024         4   # BR(~s_R -> chi_1- c )
   4.200 -     1.94558800E-06    2    -1000037         4   # BR(~s_R -> chi_2- c )
   4.201 -DECAY   1000003     5.39626901E+00   # ~s_L
   4.202 -#    BR                NDA      ID1      ID2
   4.203 -     2.39347223E-02    2     1000022         3   # BR(~s_L -> chi_10 s )
   4.204 -     3.07509980E-01    2     1000023         3   # BR(~s_L -> chi_20 s )
   4.205 -     1.60728757E-03    2     1000025         3   # BR(~s_L -> chi_30 s )
   4.206 -     1.53649582E-02    2     1000035         3   # BR(~s_L -> chi_40 s )
   4.207 -     6.09296756E-01    2    -1000024         4   # BR(~s_L -> chi_1- c )
   4.208 -     4.22862967E-02    2    -1000037         4   # BR(~s_L -> chi_2- c )
   4.209 -DECAY   1000005     3.96724304E+00   # ~b_1
   4.210 -#    BR                NDA      ID1      ID2
   4.211 -     4.18160362E-02    2     1000022         5   # BR(~b_1 -> chi_10 b )
   4.212 -     3.44516795E-01    2     1000023         5   # BR(~b_1 -> chi_20 b )
   4.213 -     4.98459344E-03    2     1000025         5   # BR(~b_1 -> chi_30 b )
   4.214 -     1.09733062E-02    2     1000035         5   # BR(~b_1 -> chi_40 b )
   4.215 -     4.49553565E-01    2    -1000024         6   # BR(~b_1 -> chi_1- t )
   4.216 -     1.48155704E-01    2     1000006       -24   # BR(~b_1 -> ~t_1 W- )
   4.217 -DECAY   2000005     7.50329212E-01   # ~b_1
   4.218 -#    BR                NDA      ID1      ID2
   4.219 -     3.25154278E-01    2     1000022         5   # BR(~b_1 -> chi_10 b )
   4.220 -     1.20256763E-01    2     1000023         5   # BR(~b_1 -> chi_20 b )
   4.221 -     5.57237357E-02    2     1000025         5   # BR(~b_1 -> chi_30 b )
   4.222 -     7.70643619E-02    2     1000035         5   # BR(~b_1 -> chi_40 b )
   4.223 -     1.62217770E-01    2    -1000024         6   # BR(~b_1 -> chi_1- t )
   4.224 -     2.59583091E-01    2     1000006       -24   # BR(~b_1 -> ~t_1 W- )
   4.225 -DECAY   2000002     1.17965845E+00   # ~u_R
   4.226 -#    BR                NDA      ID1      ID2
   4.227 -     9.85726751E-01    2     1000022         2   # BR(~u_R -> chi_10 u )
   4.228 -     9.08808102E-03    2     1000023         2   # BR(~u_R -> chi_20 u )
   4.229 -     1.22798380E-03    2     1000025         2   # BR(~u_R -> chi_30 u )
   4.230 -     3.95717282E-03    2     1000035         2   # BR(~u_R -> chi_40 u )
   4.231 -     1.15121269E-08    2     1000024         1   # BR(~u_R -> chi_1+ d )
   4.232 -DECAY   1000002     5.58312287E+00   # ~u_L
   4.233 -#    BR                NDA      ID1      ID2
   4.234 -     6.54749235E-03    2     1000022         2   # BR(~u_L -> chi_10 u )
   4.235 -     3.18045478E-01    2     1000023         2   # BR(~u_L -> chi_20 u )
   4.236 -     9.05240103E-04    2     1000025         2   # BR(~u_L -> chi_30 u )
   4.237 -     1.07987072E-02    2     1000035         2   # BR(~u_L -> chi_40 u )
   4.238 -     6.49647421E-01    2     1000024         1   # BR(~u_L -> chi_1+ d )
   4.239 -     1.40556609E-02    2     1000037         1   # BR(~u_L -> chi_2+ d )
   4.240 -DECAY   2000004     1.18227091E+00   # ~c_R
   4.241 -#    BR                NDA      ID1      ID2
   4.242 -     9.83006386E-01    2     1000022         4   # BR(~c_R -> chi_10 c )
   4.243 -     9.95793907E-03    2     1000023         4   # BR(~c_R -> chi_20 c )
   4.244 -     1.26549265E-03    2     1000025         4   # BR(~c_R -> chi_30 c )
   4.245 -     3.93520411E-03    2     1000035         4   # BR(~c_R -> chi_40 c )
   4.246 -     1.83481322E-03    2     1000024         3   # BR(~c_R -> chi_1+ s )
   4.247 -     1.64896995E-07    2     1000037         3   # BR(~c_R -> chi_2+ s )
   4.248 -DECAY   1000004     5.58062986E+00   # ~c_L
   4.249 -#    BR                NDA      ID1      ID2
   4.250 -     6.66226022E-03    2     1000022         4   # BR(~c_L -> chi_10 c )
   4.251 -     3.17993244E-01    2     1000023         4   # BR(~c_L -> chi_20 c )
   4.252 -     9.05411032E-04    2     1000025         4   # BR(~c_L -> chi_30 c )
   4.253 -     1.08163553E-02    2     1000035         4   # BR(~c_L -> chi_40 c )
   4.254 -     6.49547521E-01    2     1000024         3   # BR(~c_L -> chi_1+ s )
   4.255 -     1.40752080E-02    2     1000037         3   # BR(~c_L -> chi_2+ s )
   4.256 -DECAY   1000006     2.11359693E+00   # ~t_1
   4.257 -#    BR                NDA      ID1      ID2
   4.258 -     1.92098544E-01    2     1000022         6   # BR(~t_1 -> chi_10 t )
   4.259 -     1.20721277E-01    2     1000023         6   # BR(~t_1 -> chi_20 t )
   4.260 -     6.66982690E-01    2     1000024         5   # BR(~t_1 -> chi_1+ b )
   4.261 -     1.25079079E-02    2     1000037         5   # BR(~t_1 -> chi_2+ b )
   4.262 -     1.84205577E-04    2     1000022         4   # BR(~t_1 -> chi_10 c )
   4.263 -     7.50113894E-03    2     1000023         4   # BR(~t_1 -> chi_20 c )
   4.264 -#    BR                NDA      ID1      ID2       ID3
   4.265 -     4.23729353E-06    2     1000022        24         5   # BR(~t_1 -> chi_10 W b )
   4.266 -DECAY   2000006     7.54130982E+00   # ~t_2
   4.267 -#    BR                NDA      ID1      ID2
   4.268 -     3.00132695E-02    2     1000022         6   # BR(~t_2 -> chi_10 t )
   4.269 -     8.64257065E-02    2     1000023         6   # BR(~t_2 -> chi_20 t )
   4.270 -     4.37149566E-02    2     1000025         6   # BR(~t_2 -> chi_30 t )
   4.271 -     2.00599455E-01    2     1000035         6   # BR(~t_2 -> chi_40 t )
   4.272 -     2.14394671E-01    2     1000024         5   # BR(~t_2 -> chi_1+ b )
   4.273 -     1.97908803E-01    2     1000037         5   # BR(~t_2 -> chi_2+ b )
   4.274 -     1.91061928E-01    2     1000006        23   # BR(~t_2 -> ~t_1 Z )
   4.275 -     3.58812103E-02    2     1000006        25   # BR(~t_2 -> ~t_1 h0 )
   4.276 -DECAY   1000024     1.37969684E-02   # chi_1+
   4.277 -#    BR                NDA      ID1      ID2
   4.278 -     6.63565936E-08    2    -2000011        12   # BR(chi_1+ -> ~e_R+ nu_e )
   4.279 -     2.83903697E-03    2    -2000013        14   # BR(chi_1+ -> ~mu_R+ nu_mu )
   4.280 -     9.51754571E-01    2    -1000015        16   # BR(chi_1+ -> ~tau_1+ nu_tau )
   4.281 -     3.95561739E-02    2     1000022        24   # BR(chi_1+ -> chi_10 W+ )
   4.282 -#    BR                NDA      ID1      ID2       ID3
   4.283 -     2.02127548E-06    3     1000022        -1         2   # BR(chi_1+ -> chi_10 d u )
   4.284 -     2.01965629E-06    3     1000022        -3         4   # BR(chi_1+ -> chi_10 s c )
   4.285 -     1.95236644E-03    3     1000022       -11        12   # BR(chi_1+ -> chi_10 e+     nu_e   )
   4.286 -     1.95228827E-03    3     1000022       -13        14   # BR(chi_1+ -> chi_10 mu+    nu_mu  )
   4.287 -     1.94145568E-03    3     1000022       -15        16   # BR(chi_1+ -> chi_10 tau+   nu_tau )
   4.288 -DECAY   1000037     2.50639194E+00   # chi_2+
   4.289 -#    BR                NDA      ID1      ID2
   4.290 -     4.96576958E-02    2    -1000011        12   # BR(chi_2+ -> ~e_L+ nu_e )
   4.291 -     9.14167473E-07    2    -2000013        14   # BR(chi_2+ -> ~mu_R+ nu_mu )
   4.292 -     4.96744011E-02    2    -1000013        14   # BR(chi_2+ -> ~mu_L+ nu_mu )
   4.293 -     5.34056190E-04    2    -1000015        16   # BR(chi_2+ -> ~tau_1+ nu_tau )
   4.294 -     5.42248768E-02    2    -2000015        16   # BR(chi_2+ -> ~tau_2+ nu_tau )
   4.295 -     1.99971384E-02    2     1000012       -11   # BR(chi_2+ -> ~nu_eL e+ )
   4.296 -     2.00223840E-02    2     1000014       -13   # BR(chi_2+ -> ~nu_muL mu+ )
   4.297 -     2.71867543E-02    2     1000016       -15   # BR(chi_2+ -> ~nu_tauL tau+ )
   4.298 -     6.85990264E-02    2     1000022        24   # BR(chi_2+ -> chi_10 W+ )
   4.299 -     2.85672498E-01    2     1000023        24   # BR(chi_2+ -> chi_20 W+ )
   4.300 -     2.42226156E-01    2     1000024        23   # BR(chi_2+ -> chi_1+ Z0 )
   4.301 -     1.81865906E-01    2     1000024        25   # BR(chi_2+ -> chi_1+ h0 )
   4.302 -#    BR                NDA      ID1      ID2       ID3
   4.303 -     4.95888317E-07    3     1000022        -1         2   # BR(chi_2+ -> chi_10 d u )
   4.304 -     4.96733315E-07    3     1000022        -3         4   # BR(chi_2+ -> chi_10 s c )
   4.305 -     1.12899238E-04    3     1000022        -5         6   # BR(chi_2+ -> chi_10 b t )
   4.306 -     1.79096781E-07    3     1000022       -15        16   # BR(chi_2+ -> chi_10 tau+   nu_tau )
   4.307 -     1.79706559E-06    3     1000023        -1         2   # BR(chi_2+ -> chi_20 d u )
   4.308 -     1.79768355E-06    3     1000023        -3         4   # BR(chi_2+ -> chi_20 s c )
   4.309 -     1.18204097E-05    3     1000023        -5         6   # BR(chi_2+ -> chi_20 b t )
   4.310 -     1.12202632E-09    3     1000023       -13        14   # BR(chi_2+ -> chi_20 mu+    nu_mu  )
   4.311 -     3.27136802E-07    3     1000023       -15        16   # BR(chi_2+ -> chi_20 tau+   nu_tau )
   4.312 -     2.37972515E-07    3     1000025        -1         2   # BR(chi_2+ -> chi_30 d u )
   4.313 -     2.32515105E-07    3     1000025        -3         4   # BR(chi_2+ -> chi_30 s c )
   4.314 -     7.92676862E-08    3     1000025       -11        12   # BR(chi_2+ -> chi_30 e+     nu_e   )
   4.315 -     7.92655997E-08    3     1000025       -13        14   # BR(chi_2+ -> chi_30 mu+    nu_mu  )
   4.316 -     7.51091209E-08    3     1000025       -15        16   # BR(chi_2+ -> chi_30 tau+   nu_tau )
   4.317 -     4.11231363E-06    3     1000024        -2         2   # BR(chi_2+ -> chi_1+ u u )
   4.318 -     4.10880805E-06    3     1000024        -4         4   # BR(chi_2+ -> chi_1+ c c )
   4.319 -     1.73375312E-06    3     1000024        -1         1   # BR(chi_2+ -> chi_1+ d d )
   4.320 -     1.73679598E-06    3     1000024        -3         3   # BR(chi_2+ -> chi_1+ s s )
   4.321 -     1.95464816E-04    3     1000024        -5         5   # BR(chi_2+ -> chi_1+ b b )
   4.322 -     1.82420165E-09    3     1000024       -13        13   # BR(chi_2+ -> chi_1+ mu+    mu-    )
   4.323 -     5.15965394E-07    3     1000024       -15        15   # BR(chi_2+ -> chi_1+ tau+   tau-   )
   4.324 -#DECAY   1000022     0.00000000E+00   # chi_10
   4.325 -DECAY   1000023     1.95831641E-02   # chi_20
   4.326 -#    BR                NDA      ID1      ID2
   4.327 -     3.38444885E-02    2    -2000011        11   # BR(chi_20 -> ~e_R+ e- )
   4.328 -     3.38444885E-02    2     2000011       -11   # BR(chi_20 -> ~e_R- e+ )
   4.329 -     3.50457690E-02    2    -2000013        13   # BR(chi_20 -> ~mu_R+ mu- )
   4.330 -     3.50457690E-02    2     2000013       -13   # BR(chi_20 -> ~mu_R- mu+ )
   4.331 -     4.29284412E-01    2    -1000015        15   # BR(chi_20 -> ~tau_1+ tau- )
   4.332 -     4.29284412E-01    2     1000015       -15   # BR(chi_20 -> ~tau_1- tau+ )
   4.333 -     2.07507330E-06    2     1000022        22   # BR(chi_20 -> chi_10 photon )
   4.334 -#    BR                NDA      ID1      ID2       ID3
   4.335 -     1.75499602E-04    3     1000022         2        -2   # BR(chi_20 -> chi_10 u u )
   4.336 -     1.75229451E-04    3     1000022         4        -4   # BR(chi_20 -> chi_10 c c )
   4.337 -     2.33949042E-04    3     1000022         1        -1   # BR(chi_20 -> chi_10 d d )
   4.338 -     2.33948066E-04    3     1000022         3        -3   # BR(chi_20 -> chi_10 s s )
   4.339 -     2.40209062E-04    3     1000022         5        -5   # BR(chi_20 -> chi_10 b b )
   4.340 -     5.95285397E-04    3     1000022        12       -12   # BR(chi_20 -> chi_10 nu_e   nu_e   )
   4.341 -     5.95437477E-04    3     1000022        14       -14   # BR(chi_20 -> chi_10 nu_mu  nu_mu  )
   4.342 -     6.40615665E-04    3     1000022        16       -16   # BR(chi_20 -> chi_10 nu_tau nu_tau )
   4.343 -     2.67773168E-04    3     1000022        11       -11   # BR(chi_20 -> chi_10 e-     e+     )
   4.344 -     2.67600989E-04    3     1000022        13       -13   # BR(chi_20 -> chi_10 mu-    mu+    )
   4.345 -     2.23037987E-04    3     1000022        15       -15   # BR(chi_20 -> chi_10 tau-   tau+   )
   4.346 -DECAY   1000025     2.01366407E+00   # chi_30
   4.347 -#    BR                NDA      ID1      ID2
   4.348 -     1.22625590E-03    2    -2000011        11   # BR(chi_30 -> ~e_R+ e- )
   4.349 -     1.22625590E-03    2     2000011       -11   # BR(chi_30 -> ~e_R- e+ )
   4.350 -     5.55956865E-04    2    -1000011        11   # BR(chi_30 -> ~e_L+ e- )
   4.351 -     5.55956865E-04    2     1000011       -11   # BR(chi_30 -> ~e_L- e+ )
   4.352 -     1.23767835E-03    2    -2000013        13   # BR(chi_30 -> ~mu_R+ mu- )
   4.353 -     1.23767835E-03    2     2000013       -13   # BR(chi_30 -> ~mu_R- mu+ )
   4.354 -     5.77581253E-04    2    -1000013        13   # BR(chi_30 -> ~mu_L+ mu- )
   4.355 -     5.77581253E-04    2     1000013       -13   # BR(chi_30 -> ~mu_L- mu+ )
   4.356 -     5.10544836E-03    2    -1000015        15   # BR(chi_30 -> ~tau_1+ tau- )
   4.357 -     5.10544836E-03    2     1000015       -15   # BR(chi_30 -> ~tau_1- tau+ )
   4.358 -     6.13393856E-03    2    -2000015        15   # BR(chi_30 -> ~tau_2+ tau- )
   4.359 -     6.13393856E-03    2     2000015       -15   # BR(chi_30 -> ~tau_2- tau+ )
   4.360 -     3.06151225E-03    2    -1000012        12   # BR(chi_30 -> ~nu_eL nu_e )
   4.361 -     3.06151225E-03    2     1000012       -12   # BR(chi_30 -> ~nu_eL nu_e )
   4.362 -     3.06158815E-03    2    -1000014        14   # BR(chi_30 -> ~nu_muL nu_mu )
   4.363 -     3.06158815E-03    2     1000014       -14   # BR(chi_30 -> ~nu_muL nu_mu )
   4.364 -     3.08298711E-03    2    -1000016        16   # BR(chi_30 -> ~nu_tauL nu_tau )
   4.365 -     3.08298711E-03    2     1000016       -16   # BR(chi_30 -> ~nu_tauL nu_tau )
   4.366 -     2.98308115E-01    2    -1000024        24   # BR(chi_30 -> chi_1- W+ )
   4.367 -     2.98308115E-01    2     1000024       -24   # BR(chi_30 -> chi_1+ W- )
   4.368 -     1.10395605E-01    2     1000022        23   # BR(chi_30 -> chi_10 Z0 )
   4.369 -     2.11281988E-01    2     1000023        23   # BR(chi_30 -> chi_20 Z0 )
   4.370 -     2.11488964E-02    2     1000022        25   # BR(chi_30 -> chi_10 h0 )
   4.371 -     1.24502851E-02    2     1000023        25   # BR(chi_30 -> chi_20 h0 )
   4.372 -     1.76281584E-07    2     1000022        22   # BR(chi_30 -> chi_10 photon )
   4.373 -     1.07734851E-05    2     1000023        22   # BR(chi_30 -> chi_20 photon )
   4.374 -#    BR                NDA      ID1      ID2       ID3
   4.375 -     2.62590159E-07    3     1000024         1        -2   # BR(chi_30 -> chi_1+ d u )
   4.376 -     2.62590159E-07    3    -1000024        -1         2   # BR(chi_30 -> chi_1- d u )
   4.377 -     2.63820355E-07    3     1000024         3        -4   # BR(chi_30 -> chi_1+ s c )
   4.378 -     2.63820355E-07    3    -1000024        -3         4   # BR(chi_30 -> chi_1- s c )
   4.379 -     4.07862884E-07    3     1000024         5        -6   # BR(chi_30 -> chi_1+ b t )
   4.380 -     4.07862884E-07    3    -1000024        -5         6   # BR(chi_30 -> chi_1- b t )
   4.381 -     1.27830868E-09    3     1000024        13       -14   # BR(chi_30 -> chi_1+ mu-    nu_mu  )
   4.382 -     1.27830868E-09    3    -1000024       -13        14   # BR(chi_30 -> chi_1- mu+    nu_mu  )
   4.383 -     4.08187730E-07    3     1000024        15       -16   # BR(chi_30 -> chi_1+ tau-   nu_tau )
   4.384 -     4.08187730E-07    3    -1000024       -15        16   # BR(chi_30 -> chi_1- tau+   nu_tau )
   4.385 -     3.83545157E-08    3     1000022         2        -2   # BR(chi_30 -> chi_10 u u )
   4.386 -     3.90796040E-08    3     1000022         4        -4   # BR(chi_30 -> chi_10 c c )
   4.387 -     1.77262443E-08    3     1000022         1        -1   # BR(chi_30 -> chi_10 d d )
   4.388 -     1.97428314E-08    3     1000022         3        -3   # BR(chi_30 -> chi_10 s s )
   4.389 -     3.76632326E-06    3     1000022         5        -5   # BR(chi_30 -> chi_10 b b )
   4.390 -     1.46440172E-09    3     1000022        13       -13   # BR(chi_30 -> chi_10 mu-    mu+    )
   4.391 -     4.14342589E-07    3     1000022        15       -15   # BR(chi_30 -> chi_10 tau-   tau+   )
   4.392 -     4.26280546E-08    3     1000023         2        -2   # BR(chi_30 -> chi_20 u u )
   4.393 -     4.28546662E-08    3     1000023         4        -4   # BR(chi_30 -> chi_20 c c )
   4.394 -     6.14927340E-08    3     1000023         1        -1   # BR(chi_30 -> chi_20 d d )
   4.395 -     6.25700689E-08    3     1000023         3        -3   # BR(chi_30 -> chi_20 s s )
   4.396 -     2.57026226E-06    3     1000023         5        -5   # BR(chi_30 -> chi_20 b b )
   4.397 -     4.13205691E-09    3     1000023        11       -11   # BR(chi_30 -> chi_20 e-     e+     )
   4.398 -     5.48392586E-09    3     1000023        13       -13   # BR(chi_30 -> chi_20 mu-    mu+    )
   4.399 -     3.77266042E-07    3     1000023        15       -15   # BR(chi_30 -> chi_20 tau-   tau+   )
   4.400 -DECAY   1000035     2.65438062E+00   # chi_40
   4.401 -#    BR                NDA      ID1      ID2
   4.402 -     3.78534133E-03    2    -2000011        11   # BR(chi_40 -> ~e_R+ e- )
   4.403 -     3.78534133E-03    2     2000011       -11   # BR(chi_40 -> ~e_R- e+ )
   4.404 -     9.28174993E-03    2    -1000011        11   # BR(chi_40 -> ~e_L+ e- )
   4.405 -     9.28174993E-03    2     1000011       -11   # BR(chi_40 -> ~e_L- e+ )
   4.406 -     3.77943196E-03    2    -2000013        13   # BR(chi_40 -> ~mu_R+ mu- )
   4.407 -     3.77943196E-03    2     2000013       -13   # BR(chi_40 -> ~mu_R- mu+ )
   4.408 -     9.30603816E-03    2    -1000013        13   # BR(chi_40 -> ~mu_L+ mu- )
   4.409 -     9.30603816E-03    2     1000013       -13   # BR(chi_40 -> ~mu_L- mu+ )
   4.410 -     2.97299957E-03    2    -1000015        15   # BR(chi_40 -> ~tau_1+ tau- )
   4.411 -     2.97299957E-03    2     1000015       -15   # BR(chi_40 -> ~tau_1- tau+ )
   4.412 -     1.55489435E-02    2    -2000015        15   # BR(chi_40 -> ~tau_2+ tau- )
   4.413 -     1.55489435E-02    2     2000015       -15   # BR(chi_40 -> ~tau_2- tau+ )
   4.414 -     2.43292030E-02    2    -1000012        12   # BR(chi_40 -> ~nu_eL nu_e )
   4.415 -     2.43292030E-02    2     1000012       -12   # BR(chi_40 -> ~nu_eL nu_e )
   4.416 -     2.43297362E-02    2    -1000014        14   # BR(chi_40 -> ~nu_muL nu_mu )
   4.417 -     2.43297362E-02    2     1000014       -14   # BR(chi_40 -> ~nu_muL nu_mu )
   4.418 -     2.44800354E-02    2    -1000016        16   # BR(chi_40 -> ~nu_tauL nu_tau )
   4.419 -     2.44800354E-02    2     1000016       -16   # BR(chi_40 -> ~nu_tauL nu_tau )
   4.420 -     2.56334379E-01    2    -1000024        24   # BR(chi_40 -> chi_1- W+ )
   4.421 -     2.56334379E-01    2     1000024       -24   # BR(chi_40 -> chi_1+ W- )
   4.422 -     2.10268278E-02    2     1000022        23   # BR(chi_40 -> chi_10 Z0 )
   4.423 -     1.91430284E-02    2     1000023        23   # BR(chi_40 -> chi_20 Z0 )
   4.424 -     6.93261248E-02    2     1000022        25   # BR(chi_40 -> chi_10 h0 )
   4.425 -     1.42158351E-01    2     1000023        25   # BR(chi_40 -> chi_20 h0 )
   4.426 -     2.20777918E-07    2     1000022        22   # BR(chi_40 -> chi_10 photon )
   4.427 -     1.16161904E-05    2     1000023        22   # BR(chi_40 -> chi_20 photon )
   4.428 -     3.01381590E-09    2     1000025        22   # BR(chi_40 -> chi_30 photon )
   4.429 -#    BR                NDA      ID1      ID2       ID3
   4.430 -     1.54514764E-06    3     1000024         1        -2   # BR(chi_40 -> chi_1+ d u )
   4.431 -     1.54514764E-06    3    -1000024        -1         2   # BR(chi_40 -> chi_1- d u )
   4.432 -     1.54589778E-06    3     1000024         3        -4   # BR(chi_40 -> chi_1+ s c )
   4.433 -     1.54589778E-06    3    -1000024        -3         4   # BR(chi_40 -> chi_1- s c )
   4.434 -     6.59532789E-06    3     1000024         5        -6   # BR(chi_40 -> chi_1+ b t )
   4.435 -     6.59532789E-06    3    -1000024        -5         6   # BR(chi_40 -> chi_1- b t )
   4.436 -     2.40333233E-09    3     1000024        13       -14   # BR(chi_40 -> chi_1+ mu-    nu_mu  )
   4.437 -     2.40333233E-09    3    -1000024       -13        14   # BR(chi_40 -> chi_1- mu+    nu_mu  )
   4.438 -     4.77338548E-07    3     1000024        15       -16   # BR(chi_40 -> chi_1+ tau-   nu_tau )
   4.439 -     4.77338548E-07    3    -1000024       -15        16   # BR(chi_40 -> chi_1- tau+   nu_tau )
   4.440 -     3.40206737E-07    3     1000022         2        -2   # BR(chi_40 -> chi_10 u u )
   4.441 -     3.40112728E-07    3     1000022         4        -4   # BR(chi_40 -> chi_10 c c )
   4.442 -     3.52538124E-07    3     1000022         1        -1   # BR(chi_40 -> chi_10 d d )
   4.443 -     3.53934460E-07    3     1000022         3        -3   # BR(chi_40 -> chi_10 s s )
   4.444 -     3.07105768E-06    3     1000022         5        -5   # BR(chi_40 -> chi_10 b b )
   4.445 -     1.07243373E-09    3     1000022        13       -13   # BR(chi_40 -> chi_10 mu-    mu+    )
   4.446 -     3.03397870E-07    3     1000022        15       -15   # BR(chi_40 -> chi_10 tau-   tau+   )
   4.447 -     1.69784497E-06    3     1000023         2        -2   # BR(chi_40 -> chi_20 u u )
   4.448 -     1.69624762E-06    3     1000023         4        -4   # BR(chi_40 -> chi_20 c c )
   4.449 -     1.96351586E-06    3     1000023         1        -1   # BR(chi_40 -> chi_20 d d )
   4.450 -     1.96429148E-06    3     1000023         3        -3   # BR(chi_40 -> chi_20 s s )
   4.451 -     4.79198149E-06    3     1000023         5        -5   # BR(chi_40 -> chi_20 b b )
   4.452 -     3.56484846E-08    3     1000023        11       -11   # BR(chi_40 -> chi_20 e-     e+     )
   4.453 -     3.73831549E-08    3     1000023        13       -13   # BR(chi_40 -> chi_20 mu-    mu+    )
   4.454 -     3.88859211E-07    3     1000023        15       -15   # BR(chi_40 -> chi_20 tau-   tau+   )
   4.455 -     5.58590796E-08    3     1000025         2        -2   # BR(chi_40 -> chi_30 u u )
   4.456 -     5.41228881E-08    3     1000025         4        -4   # BR(chi_40 -> chi_30 c c )
   4.457 -     7.23741574E-08    3     1000025         1        -1   # BR(chi_40 -> chi_30 d d )
   4.458 -     7.23443458E-08    3     1000025         3        -3   # BR(chi_40 -> chi_30 s s )
   4.459 -     4.10196010E-08    3     1000025         5        -5   # BR(chi_40 -> chi_30 b b )
   4.460 -     3.27549887E-08    3     1000025        12       -12   # BR(chi_40 -> chi_30 nu_e   nu_e   )
   4.461 -     3.27549864E-08    3     1000025        14       -14   # BR(chi_40 -> chi_30 nu_mu  nu_mu  )
   4.462 -     3.27543328E-08    3     1000025        16       -16   # BR(chi_40 -> chi_30 nu_tau nu_tau )
   4.463 -     1.63177039E-08    3     1000025        11       -11   # BR(chi_40 -> chi_30 e-     e+     )
   4.464 -     1.63139048E-08    3     1000025        13       -13   # BR(chi_40 -> chi_30 mu-    mu+    )
   4.465 -     1.52197176E-08    3     1000025        15       -15   # BR(chi_40 -> chi_30 tau-   tau+   )
   4.466 -DECAY   1000021     4.85485809E+00   # ~g
   4.467 -#    BR                NDA      ID1      ID2
   4.468 -     4.91380831E-02    2    -2000002         2   # BR(~g -> ~u_R u )
   4.469 -     4.91380831E-02    2     2000002        -2   # BR(~g -> ~u_R u )
   4.470 -     2.45338640E-02    2    -1000002         2   # BR(~g -> ~u_L u )
   4.471 -     2.45338640E-02    2     1000002        -2   # BR(~g -> ~u_L u )
   4.472 -     4.90961549E-02    2    -2000004         4   # BR(~g -> ~c_R c )
   4.473 -     4.90961549E-02    2     2000004        -4   # BR(~g -> ~c_R c )
   4.474 -     2.45499389E-02    2    -1000004         4   # BR(~g -> ~c_L c )
   4.475 -     2.45499389E-02    2     1000004        -4   # BR(~g -> ~c_L c )
   4.476 -     5.27181630E-02    2    -1000006         6   # BR(~g -> ~t_1 t )
   4.477 -     5.27181630E-02    2     1000006        -6   # BR(~g -> ~t_1 t )
   4.478 -     4.95537620E-02    2    -2000001         1   # BR(~g -> ~d_R d )
   4.479 -     4.95537620E-02    2     2000001        -1   # BR(~g -> ~d_R d )
   4.480 -     1.85795071E-02    2    -1000001         1   # BR(~g -> ~d_L d )
   4.481 -     1.85795071E-02    2     1000001        -1   # BR(~g -> ~d_L d )
   4.482 -     4.95584279E-02    2    -2000003         3   # BR(~g -> ~s_R s )
   4.483 -     4.95584279E-02    2     2000003        -3   # BR(~g -> ~s_R s )
   4.484 -     1.85803595E-02    2    -1000003         3   # BR(~g -> ~s_L s )
   4.485 -     1.85803595E-02    2     1000003        -3   # BR(~g -> ~s_L s )
   4.486 -     1.10173634E-01    2    -1000005         5   # BR(~g -> ~b_1 b )
   4.487 -     1.10173634E-01    2     1000005        -5   # BR(~g -> ~b_1 b )
   4.488 -     5.20699749E-02    2    -2000005         5   # BR(~g -> ~b_1 b )
   4.489 -     5.20699749E-02    2     2000005        -5   # BR(~g -> ~b_1 b )
   4.490 -     1.06207050E-03    2    -1000006         4   # BR(~g -> ~t_1 c )
   4.491 -     1.06207050E-03    2     1000006        -4   # BR(~g -> ~t_1 c )
   4.492 -     5.75625169E-06    2     1000022        21   # BR(~g -> chi_10 g )
   4.493 -     4.69218669E-05    2     1000023        21   # BR(~g -> chi_20 g )
   4.494 -     7.12968152E-05    2     1000025        21   # BR(~g -> chi_30 g )
   4.495 -     8.26666789E-05    2     1000035        21   # BR(~g -> chi_40 g )
   4.496 -#    BR                NDA      ID1      ID2       ID3
   4.497 -     2.06460168E-05    3     1000022         6        -6   # BR(~g -> chi_10 t t )
   4.498 -     2.33761829E-05    3     1000023         6        -6   # BR(~g -> chi_20 t t )
   4.499 -     1.48319351E-04    3     1000024        -6         5   # BR(~g -> chi_1+ t b )
   4.500 -     1.48319351E-04    3    -1000024         6        -5   # BR(~g -> chi_1- t b )
   4.501 -     1.12409320E-04    3     1000037        -6         5   # BR(~g -> chi_2+ t b )
   4.502 -     1.12409320E-04    3    -1000037         6        -5   # BR(~g -> chi_2- t b )
   4.503 -DECAY        25     2.13736137E-03   # h0        
   4.504 -#    BR                NDA      ID1      ID2
   4.505 -     1.10845559E-08    2         -11        11   # BR(h0 -> e+ e- )
   4.506 -     4.73904679E-04    2         -13        13   # BR(h0 -> mu+ mu- )
   4.507 -     1.33924631E-01    2         -15        15   # BR(h0 -> tau+ tau- )
   4.508 -     1.59113863E-06    2          -1         1   # BR(h0 -> d d )
   4.509 -     4.67510706E-04    2          -3         3   # BR(h0 -> s s )
   4.510 -     8.23814669E-01    2          -5         5   # BR(h0 -> b b )
   4.511 -     2.58413707E-07    2          -2         2   # BR(h0 -> u u )
   4.512 -     4.13174238E-02    2          -4         4   # BR(h0 -> c c )
   4.513 -DECAY        35     7.54882906E-01   # H0        
   4.514 -#    BR                NDA      ID1      ID2
   4.515 -     8.69071706E-09    2         -11        11   # BR(H0 -> e+ e- )
   4.516 -     3.71561323E-04    2         -13        13   # BR(H0 -> mu+ mu- )
   4.517 -     1.05151918E-01    2         -15        15   # BR(H0 -> tau+ tau- )
   4.518 -     1.26335841E-06    2          -1         1   # BR(H0 -> d d )
   4.519 -     3.71201636E-04    2          -3         3   # BR(H0 -> s s )
   4.520 -     6.56434786E-01    2          -5         5   # BR(H0 -> b b )
   4.521 -     5.61965255E-06    2          -4         4   # BR(H0 -> c c )
   4.522 -     4.51735831E-02    2          -6         6   # BR(H0 -> t t )
   4.523 -     5.26718734E-04    2    -2000011   2000011   # BR(H0 -> ~e_R+ ~e_R- )
   4.524 -     5.36594891E-04    2    -2000013   2000013   # BR(H0 -> ~mu_R+ ~mu_R- )
   4.525 -     2.52253125E-05    2    -2000013   1000013   # BR(H0 -> ~mu_R+ ~mu_L- )
   4.526 -     2.52253125E-05    2     2000013  -1000013   # BR(H0 -> ~mu_R- ~mu_L+ )
   4.527 -     5.64029419E-03    2    -1000015   1000015   # BR(H0 -> ~tau_1+ ~tau_1- )
   4.528 -     5.41995560E-03    2    -1000015   2000015   # BR(H0 -> ~tau_1+ ~tau_2- )
   4.529 -     5.41995560E-03    2     1000015  -2000015   # BR(H0 -> ~tau_1- ~tau_2+ )
   4.530 -     1.01356862E-03    2    -1000012   1000012   # BR(H0 -> ~nu_eL ~nu_eL )
   4.531 -     1.01373379E-03    2    -1000014   1000014   # BR(H0 -> ~nu_muL ~nu_muL )
   4.532 -     1.05919731E-03    2    -1000016   1000016   # BR(H0 -> ~nu_tauL ~nu_tauL )
   4.533 -     2.16217809E-02    2     1000022   1000022   # BR(H0 -> chi_10 chi_10 )
   4.534 -     6.31380049E-02    2     1000022   1000023   # BR(H0 -> chi_10 chi_20 )
   4.535 -     1.84027255E-02    2     1000023   1000023   # BR(H0 -> chi_20 chi_20 )
   4.536 -     4.93922062E-02    2    -1000024   1000024   # BR(H0 -> chi_1- chi_1+ )
   4.537 -     1.99007786E-03    2          23        23   # BR(H0 -> Z0 Z0 )
   4.538 -     4.25701340E-03    2          24       -24   # BR(H0 -> W+ W- )
   4.539 -     1.30077786E-02    2          25        25   # BR(H0 -> h0 h0 )
   4.540 -DECAY        36     1.16285684E+00   # A0        
   4.541 -#    BR                NDA      ID1      ID2
   4.542 -     5.65363855E-09    2         -11        11   # BR(A0 -> e+ e- )
   4.543 -     2.41714692E-04    2         -13        13   # BR(A0 -> mu+ mu- )
   4.544 -     6.84106364E-02    2         -15        15   # BR(A0 -> tau+ tau- )
   4.545 -     8.21853882E-07    2          -1         1   # BR(A0 -> d d )
   4.546 -     2.41478165E-04    2          -3         3   # BR(A0 -> s s )
   4.547 -     4.27077745E-01    2          -5         5   # BR(A0 -> b b )
   4.548 -     2.79417505E-06    2          -4         4   # BR(A0 -> c c )
   4.549 -     9.09644166E-02    2          -6         6   # BR(A0 -> t t )
   4.550 -     1.69808535E-05    2    -2000013   1000013   # BR(A0 -> ~mu_R+ ~mu_L- )
   4.551 -     1.69808535E-05    2     2000013  -1000013   # BR(A0 -> ~mu_R- ~mu_L+ )
   4.552 -     4.93913183E-03    2    -1000015   2000015   # BR(A0 -> ~tau_1+ ~tau_2- )
   4.553 -     4.93913183E-03    2     1000015  -2000015   # BR(A0 -> ~tau_1- ~tau_2+ )
   4.554 -     2.14719342E-02    2     1000022   1000022   # BR(A0 -> chi_10 chi_10 )
   4.555 -     9.26271442E-02    2     1000022   1000023   # BR(A0 -> chi_10 chi_20 )
   4.556 -     8.05805430E-02    2     1000023   1000023   # BR(A0 -> chi_20 chi_20 )
   4.557 -     2.06152943E-01    2    -1000024   1000024   # BR(A0 -> chi_1- chi_1+ )
   4.558 -     2.31559708E-03    2          25        23   # BR(A0 -> h0 Z0 )
   4.559 -DECAY        37     6.66682672E-01   # H+        
   4.560 -#    BR                NDA      ID1      ID2
   4.561 -     1.00816042E-08    2          12       -11   # BR(H+ -> nu_e e+ )
   4.562 -     4.31027177E-04    2          14       -13   # BR(H+ -> nu_mu mu+ )
   4.563 -     1.21990489E-01    2          16       -15   # BR(H+ -> nu_tau tau+ )
   4.564 -     1.28446179E-06    2           2        -1   # BR(H+ -> u d )
   4.565 -     3.81754365E-04    2           4        -3   # BR(H+ -> c s )
   4.566 -     6.34506510E-01    2           6        -5   # BR(H+ -> t b )
   4.567 -     1.96417077E-09    2     1000012  -2000011   # BR(H+ -> ~nu_eL ~e_R+ )
   4.568 -     8.89115770E-04    2     1000012  -1000011   # BR(H+ -> ~nu_eL ~e_L+ )
   4.569 -     8.39550880E-05    2     1000014  -2000013   # BR(H+ -> ~nu_muL ~mu_R+ )
   4.570 -     8.82522415E-04    2     1000014  -1000013   # BR(H+ -> ~nu_muL ~mu_L+ )
   4.571 -     2.25057366E-02    2     1000016  -1000015   # BR(H+ -> ~nu_tauL ~tau_1+ )
   4.572 -     1.64768456E-05    2     1000016  -2000015   # BR(H+ -> ~nu_tauL ~tau_2+ )
   4.573 -     2.12465664E-01    2     1000024   1000022   # BR(H+ -> chi_1+ chi_10 )
   4.574 -     1.23499359E-03    2     1000024   1000023   # BR(H+ -> chi_1+ chi_20 )
   4.575 -     4.61045980E-03    2          25        24   # BR(H+ -> h0 W+ )

mercurial