go-hep.org/x/hep@v0.38.1/rio/testdata/gen-runhdr.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 //go:build ignore 6 7 package main 8 9 import ( 10 "compress/zlib" 11 "flag" 12 "log" 13 "os" 14 15 "go-hep.org/x/hep/rio" 16 ) 17 18 type RunHeader struct { 19 RunNbr int32 20 Detector string 21 Descr string 22 SubDets []string 23 Ints []int64 24 Floats []float64 25 } 26 27 func main() { 28 fname := flag.String("fname", "runhdr.rio", "file to create") 29 compr := flag.Bool("compr", false, "enable records compression") 30 flag.Parse() 31 32 f, err := os.Create(*fname) 33 if err != nil { 34 log.Fatal(err) 35 } 36 defer func() { 37 err = f.Close() 38 if err != nil { 39 log.Fatal(err) 40 } 41 }() 42 43 w, err := rio.NewWriter(f) 44 if err != nil { 45 log.Fatal(err) 46 } 47 defer w.Close() 48 49 if *compr { 50 err = w.SetCompressor(rio.CompressZlib, zlib.DefaultCompression) 51 if err != nil { 52 log.Fatalf("error setting compressor: %v\n", err) 53 } 54 } 55 56 var runhdr RunHeader 57 rec := w.Record("RioRunHeader") 58 if rec == nil { 59 log.Fatal("could not fetch record [RioRunHeader]\n") 60 } 61 62 err = rec.Connect("RunHeader", &runhdr) 63 if err != nil { 64 log.Fatalf("error connecting [RunHeader]: %v", err) 65 } 66 blk := rec.Block("RunHeader") 67 68 for irec := 0; irec < 10; irec++ { 69 runhdr = RunHeader{ 70 RunNbr: int32(irec), 71 Detector: "MyDetector", 72 Descr: "dummy run number", 73 SubDets: []string{"subdet 0", "subdet 1"}, 74 Floats: []float64{ 75 float64(irec) + 100, 76 float64(irec) + 200, 77 float64(irec) + 300, 78 }, 79 Ints: []int64{ 80 int64(irec) + 100, 81 int64(irec) + 200, 82 int64(irec) + 300, 83 }, 84 } 85 err = blk.Write(&runhdr) 86 if err != nil { 87 log.Fatalf("error writing block: %v (irec=%d)", err, irec) 88 } 89 err = rec.Write() 90 if err != nil { 91 log.Fatalf("error writing record: %v (irec=%d)", err, irec) 92 } 93 } 94 } 95 96 // EOF