go-hep.org/x/hep@v0.38.1/lcio/reader_test.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 lcio_test 6 7 import ( 8 "fmt" 9 "io" 10 "log" 11 "reflect" 12 "testing" 13 14 "go-hep.org/x/hep/lcio" 15 ) 16 17 func ExampleReader() { 18 r, err := lcio.Open("testdata/event_golden.slcio") 19 if err != nil { 20 log.Fatal(err) 21 } 22 defer r.Close() 23 24 for r.Next() { 25 evt := r.Event() 26 fmt.Printf("event number = %d (weight=%+e)\n", evt.EventNumber, evt.Weight()) 27 fmt.Printf("run number = %d\n", evt.RunNumber) 28 fmt.Printf("detector = %q\n", evt.Detector) 29 fmt.Printf("collections = %v\n", evt.Names()) 30 calohits := evt.Get("CaloHits").(*lcio.CalorimeterHitContainer) 31 fmt.Printf("calohits: %d\n", len(calohits.Hits)) 32 for i, hit := range calohits.Hits { 33 fmt.Printf(" calohit[%d]: cell-id0=%d cell-id1=%d ene=%+e ene-err=%+e\n", 34 i, hit.CellID0, hit.CellID1, hit.Energy, hit.EnergyErr, 35 ) 36 } 37 } 38 39 err = r.Err() 40 if err == io.EOF { 41 err = nil 42 } 43 44 if err != nil { 45 log.Fatal(err) 46 } 47 48 // Output: 49 // event number = 52 (weight=+4.200000e+01) 50 // run number = 42 51 // detector = "my detector" 52 // collections = [McParticles SimCaloHits CaloHits] 53 // calohits: 1 54 // calohit[0]: cell-id0=1024 cell-id1=2048 ene=+1.000000e+03 ene-err=+1.000000e-01 55 } 56 57 func TestOpen(t *testing.T) { 58 ref := lcio.RunHeader{ 59 RunNumber: 42, 60 Descr: "a simple run header", 61 Detector: "my detector", 62 SubDetectors: []string{"det-1", "det-2"}, 63 Params: lcio.Params{ 64 Floats: map[string][]float32{ 65 "floats-1": {1, 2, 3}, 66 "floats-2": {4, 5, 6}, 67 }, 68 Ints: map[string][]int32{ 69 "ints-1": {1, 2, 3}, 70 "ints-2": {4, 5, 6}, 71 }, 72 Strings: map[string][]string{ 73 "strs-1": {"1", "2", "3"}, 74 }, 75 }, 76 } 77 78 for _, fname := range []string{ 79 "testdata/run-header_golden.slcio", 80 "testdata/run-header-compressed_golden.slcio", 81 } { 82 t.Run(fname, func(t *testing.T) { 83 r, err := lcio.Open(fname) 84 if err != nil { 85 t.Fatalf("%s: error opening file: %v", fname, err) 86 } 87 defer r.Close() 88 89 r.Next() 90 if err := r.Err(); err != nil && err != io.EOF { 91 t.Fatalf("%s: %v", fname, err) 92 } 93 94 rhdr := r.RunHeader() 95 if got, want := rhdr, ref; !reflect.DeepEqual(got, want) { 96 t.Fatalf("%s: run-headers differ.\ngot= %#v\nwant=%#v\n", fname, got, want) 97 } 98 99 if got, want := rhdr.String(), ref.String(); got != want { 100 t.Fatalf("%s: run-headers differ.\ngot= %q\nwant=%q\n", fname, got, want) 101 } 102 103 err = r.Close() 104 if err != nil { 105 t.Fatalf("%s: error closing file: %v", fname, err) 106 } 107 }) 108 } 109 }