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  }