go-hep.org/x/hep@v0.38.1/slha/example/go-slha-basic/main.go (about) 1 // Copyright ©2017 The go-hep Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "flag" 9 "fmt" 10 "log" 11 "os" 12 13 "go-hep.org/x/hep/slha" 14 ) 15 16 func handle(err error) { 17 if err != nil { 18 log.Panicf("**error: %+v\n", err) 19 } 20 } 21 22 func main() { 23 log.SetFlags(0) 24 log.SetPrefix("slha: ") 25 26 flag.Usage = func() { 27 fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) 28 fmt.Fprintf(os.Stderr, " $ %s <path-to-SLHA-file>\n", os.Args[0]) 29 flag.PrintDefaults() 30 } 31 32 flag.Parse() 33 if flag.NArg() <= 0 { 34 log.Printf("**error** need an input file name\n") 35 flag.Usage() 36 os.Exit(1) 37 } 38 39 fname := flag.Arg(0) 40 41 f, err := os.Open(fname) 42 if err != nil { 43 log.Printf("could not open file [%s]: %v\n", fname, err) 44 os.Exit(1) 45 } 46 defer f.Close() 47 48 data, err := slha.Decode(f) 49 if err != nil { 50 log.Printf("could not decode file [%s]: %v\n", fname, err) 51 os.Exit(1) 52 } 53 54 spinfo := data.Blocks.Get("SPINFO") 55 if spinfo != nil { 56 value, err := spinfo.Get(1) 57 handle(err) 58 fmt.Printf("spinfo: %s -- %q\n", value.Interface(), value.Comment()) 59 } 60 61 modsel := data.Blocks.Get("MODSEL") 62 if modsel != nil { 63 value, err := modsel.Get(1) 64 handle(err) 65 fmt.Printf("modsel: %d -- %q\n", value.Interface(), value.Comment()) 66 } 67 68 mass := data.Blocks.Get("MASS") 69 if mass != nil { 70 value, err := mass.Get(5) 71 handle(err) 72 fmt.Printf("mass[pdgid=5]: %v -- %q\n", value.Interface(), value.Comment()) 73 } 74 75 nmix := data.Blocks.Get("NMIX") 76 if nmix != nil { 77 value, err := nmix.Get(1, 2) 78 handle(err) 79 fmt.Printf("nmix[1,2] = %v -- %q\n", value.Interface(), value.Comment()) 80 } 81 } 82 83 // Output: 84 // spinfo: SOFTSUSY -- "spectrum calculator" 85 // modsel: 1 -- "sugra" 86 // mass[pdgid=5]: 4.88991651 -- "b-quark pole mass calculated from mb(mb)_Msbar" 87 // nmix[1,2] = -0.0531103553 -- "N_12"