go-hep.org/x/hep@v0.38.1/hbook/ntup/example_test.go (about) 1 // Copyright ©2019 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 ntup_test 6 7 import ( 8 "database/sql" 9 "fmt" 10 "log" 11 "math" 12 13 "go-hep.org/x/hep/hbook/ntup" 14 "go-hep.org/x/hep/hbook/ntup/ntcsv" 15 ) 16 17 func ExampleNtuple_open() { 18 db, err := sql.Open("csv", "ntcsv/testdata/simple-with-header.csv") 19 if err != nil { 20 log.Fatalf("could not open csv-db file: %+v", err) 21 } 22 defer db.Close() 23 24 nt, err := ntup.Open(db, "ntup") 25 if err != nil { 26 log.Fatalf("could not open ntup: %+v", err) 27 } 28 fmt.Printf("name=%q\n", nt.Name()) 29 30 // Output: 31 // name="ntup" 32 } 33 34 func ExampleNtuple_scanH2D() { 35 nt, err := ntcsv.Open( 36 "ntcsv/testdata/simple-with-header.csv", 37 ntcsv.Comma(';'), 38 ntcsv.Header(), 39 ntcsv.Columns("v1", "v2", "v3"), 40 ) 41 if err != nil { 42 log.Fatal(err) 43 } 44 defer func() { 45 err = nt.DB().Close() 46 if err != nil { 47 log.Fatal(err) 48 } 49 }() 50 51 h, err := nt.ScanH2D("v1, v2", nil) 52 if err != nil { 53 log.Fatal(err) 54 } 55 fmt.Printf("XMean: %f\n", h.XMean()) 56 fmt.Printf("YMean: %f\n", h.YMean()) 57 fmt.Printf("XRMS: %f\n", h.XRMS()) 58 fmt.Printf("YRMS: %f\n", h.YRMS()) 59 fmt.Printf("XStdDev: %f\n", h.XStdDev()) 60 fmt.Printf("YStdDev: %f\n", h.YStdDev()) 61 fmt.Printf("XStdErr: %f\n", h.XStdErr()) 62 fmt.Printf("YStdErr: %f\n", h.YStdErr()) 63 64 // Output: 65 // XMean: 4.500000 66 // YMean: 4.500000 67 // XRMS: 5.338539 68 // YRMS: 5.338539 69 // XStdDev: 3.027650 70 // YStdDev: 3.027650 71 // XStdErr: 0.957427 72 // YStdErr: 0.957427 73 } 74 75 func ExampleNtuple_scan() { 76 nt, err := ntcsv.Open( 77 "ntcsv/testdata/simple-with-header.csv", 78 ntcsv.Comma(';'), 79 ntcsv.Header(), 80 ntcsv.Columns("v1", "v2", "v3"), 81 ) 82 if err != nil { 83 log.Fatal(err) 84 } 85 defer func() { 86 err = nt.DB().Close() 87 if err != nil { 88 log.Fatal(err) 89 } 90 }() 91 92 var ( 93 v1min = +math.MaxFloat64 94 v1max = -math.MaxFloat64 95 v2min = +math.MaxFloat64 96 v2max = -math.MaxFloat64 97 ) 98 err = nt.Scan("v1, v2", func(v1, v2 float64) error { 99 v1min = math.Min(v1min, v1) 100 v1max = math.Max(v1max, v1) 101 v2min = math.Min(v2min, v2) 102 v2max = math.Max(v2max, v2) 103 return nil 104 }) 105 if err != nil { 106 log.Fatal(err) 107 } 108 109 fmt.Printf("V1Min %v\n", v1min) 110 fmt.Printf("V1Max %v\n", v1max) 111 fmt.Printf("V2Min %v\n", v2min) 112 fmt.Printf("V2Max %v\n", v2max) 113 114 //Output: 115 // V1Min 0 116 // V1Max 9 117 // V2Min 0 118 // V2Max 9 119 120 } 121 122 func ExampleNtuple_scanH1D() { 123 nt, err := ntcsv.Open( 124 "ntcsv/testdata/simple-with-header.csv", 125 ntcsv.Comma(';'), 126 ntcsv.Header(), 127 ntcsv.Columns("v1", "v2", "v3"), 128 ) 129 if err != nil { 130 log.Fatal(err) 131 } 132 defer func() { 133 err = nt.DB().Close() 134 if err != nil { 135 log.Fatal(err) 136 } 137 }() 138 139 h, err := nt.ScanH1D("v1", nil) 140 if err != nil { 141 log.Fatal(err) 142 } 143 fmt.Printf("V1Mean: %f\n", h.XMean()) 144 fmt.Printf("V1RMS: %f\n", h.XRMS()) 145 fmt.Printf("V1StdDev: %f\n", h.XStdDev()) 146 fmt.Printf("V1StdErr: %f\n", h.XStdErr()) 147 148 // Output: 149 // V1Mean: 4.500000 150 // V1RMS: 5.338539 151 // V1StdDev: 3.027650 152 // V1StdErr: 0.957427 153 }