go-hep.org/x/hep@v0.38.1/groot/rjson/rjson_example_test.go (about)

     1  // Copyright ©2023 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 rjson_test
     6  
     7  import (
     8  	"bytes"
     9  	"encoding/json"
    10  	"fmt"
    11  	"log"
    12  
    13  	"go-hep.org/x/hep/groot/rhist"
    14  	"go-hep.org/x/hep/groot/rjson"
    15  	"go-hep.org/x/hep/hbook"
    16  )
    17  
    18  func ExampleMarshal() {
    19  	h := hbook.NewH1D(5, 0, 5)
    20  	h.Fill(1, 1)
    21  	h.Fill(-1, 1)
    22  	h.Ann["name"] = "h1"
    23  	h.Ann["title"] = "my title"
    24  
    25  	raw, err := rjson.Marshal(rhist.NewH1FFrom(h))
    26  	if err != nil {
    27  		log.Fatalf("could not marshal to ROOT JSON: %+v", err)
    28  	}
    29  
    30  	buf := new(bytes.Buffer)
    31  	err = json.Indent(buf, raw, "", "  ")
    32  	if err != nil {
    33  		log.Fatalf("could not indent JSON: %+v", err)
    34  	}
    35  
    36  	fmt.Printf("json: %s\n", buf.String())
    37  
    38  	// Output:
    39  	// json: {
    40  	//   "_typename": "TH1F",
    41  	//   "fUniqueID": 0,
    42  	//   "fBits": 50331648,
    43  	//   "fName": "h1",
    44  	//   "fTitle": "my title",
    45  	//   "fLineColor": 602,
    46  	//   "fLineStyle": 1,
    47  	//   "fLineWidth": 1,
    48  	//   "fFillColor": 0,
    49  	//   "fFillStyle": 1001,
    50  	//   "fMarkerColor": 1,
    51  	//   "fMarkerStyle": 1,
    52  	//   "fMarkerSize": 1,
    53  	//   "fNcells": 7,
    54  	//   "fXaxis": {
    55  	//     "_typename": "TAxis",
    56  	//     "fUniqueID": 0,
    57  	//     "fBits": 50331648,
    58  	//     "fName": "xaxis",
    59  	//     "fTitle": "",
    60  	//     "fNdivisions": 510,
    61  	//     "fAxisColor": 1,
    62  	//     "fLabelColor": 1,
    63  	//     "fLabelFont": 42,
    64  	//     "fLabelOffset": 0.005,
    65  	//     "fLabelSize": 0.035,
    66  	//     "fTickLength": 0.03,
    67  	//     "fTitleOffset": 1,
    68  	//     "fTitleSize": 0.035,
    69  	//     "fTitleColor": 1,
    70  	//     "fTitleFont": 42,
    71  	//     "fNbins": 5,
    72  	//     "fXmin": 0,
    73  	//     "fXmax": 5,
    74  	//     "fXbins": [
    75  	//       0,
    76  	//       1,
    77  	//       2,
    78  	//       3,
    79  	//       4,
    80  	//       5
    81  	//     ],
    82  	//     "fFirst": 0,
    83  	//     "fLast": 0,
    84  	//     "fBits2": 0,
    85  	//     "fTimeDisplay": false,
    86  	//     "fTimeFormat": "",
    87  	//     "fLabels": null,
    88  	//     "fModLabs": null
    89  	//   },
    90  	//   "fYaxis": {
    91  	//     "_typename": "TAxis",
    92  	//     "fUniqueID": 0,
    93  	//     "fBits": 50331648,
    94  	//     "fName": "yaxis",
    95  	//     "fTitle": "",
    96  	//     "fNdivisions": 510,
    97  	//     "fAxisColor": 1,
    98  	//     "fLabelColor": 1,
    99  	//     "fLabelFont": 42,
   100  	//     "fLabelOffset": 0.005,
   101  	//     "fLabelSize": 0.035,
   102  	//     "fTickLength": 0.03,
   103  	//     "fTitleOffset": 1,
   104  	//     "fTitleSize": 0.035,
   105  	//     "fTitleColor": 1,
   106  	//     "fTitleFont": 42,
   107  	//     "fNbins": 1,
   108  	//     "fXmin": 0,
   109  	//     "fXmax": 1,
   110  	//     "fXbins": [],
   111  	//     "fFirst": 0,
   112  	//     "fLast": 0,
   113  	//     "fBits2": 0,
   114  	//     "fTimeDisplay": false,
   115  	//     "fTimeFormat": "",
   116  	//     "fLabels": null,
   117  	//     "fModLabs": null
   118  	//   },
   119  	//   "fZaxis": {
   120  	//     "_typename": "TAxis",
   121  	//     "fUniqueID": 0,
   122  	//     "fBits": 50331648,
   123  	//     "fName": "zaxis",
   124  	//     "fTitle": "",
   125  	//     "fNdivisions": 510,
   126  	//     "fAxisColor": 1,
   127  	//     "fLabelColor": 1,
   128  	//     "fLabelFont": 42,
   129  	//     "fLabelOffset": 0.005,
   130  	//     "fLabelSize": 0.035,
   131  	//     "fTickLength": 0.03,
   132  	//     "fTitleOffset": 1,
   133  	//     "fTitleSize": 0.035,
   134  	//     "fTitleColor": 1,
   135  	//     "fTitleFont": 42,
   136  	//     "fNbins": 1,
   137  	//     "fXmin": 0,
   138  	//     "fXmax": 1,
   139  	//     "fXbins": [],
   140  	//     "fFirst": 0,
   141  	//     "fLast": 0,
   142  	//     "fBits2": 0,
   143  	//     "fTimeDisplay": false,
   144  	//     "fTimeFormat": "",
   145  	//     "fLabels": null,
   146  	//     "fModLabs": null
   147  	//   },
   148  	//   "fBarOffset": 0,
   149  	//   "fBarWidth": 1000,
   150  	//   "fEntries": 2,
   151  	//   "fTsumw": 2,
   152  	//   "fTsumw2": 2,
   153  	//   "fTsumwx": 0,
   154  	//   "fTsumwx2": 2,
   155  	//   "fMaximum": -1111,
   156  	//   "fMinimum": -1111,
   157  	//   "fNormFactor": 0,
   158  	//   "fContour": [],
   159  	//   "fSumw2": [
   160  	//     1,
   161  	//     0,
   162  	//     1,
   163  	//     0,
   164  	//     0,
   165  	//     0,
   166  	//     0
   167  	//   ],
   168  	//   "fOption": "",
   169  	//   "fFunctions": {
   170  	//     "_typename": "TList",
   171  	//     "name": "",
   172  	//     "arr": [],
   173  	//     "opt": []
   174  	//   },
   175  	//   "fBufferSize": 0,
   176  	//   "fBuffer": [],
   177  	//   "fBinStatErrOpt": 0,
   178  	//   "fStatOverflows": 2,
   179  	//   "fArray": [
   180  	//     1,
   181  	//     0,
   182  	//     1,
   183  	//     0,
   184  	//     0,
   185  	//     0,
   186  	//     0
   187  	//   ]
   188  	// }
   189  }