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