go-hep.org/x/hep@v0.38.1/groot/riofs/riofs.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 riofs contains the types and low-level functions to deal with opening
     6  // and creating ROOT files, and decoding the internal structure of ROOT files.
     7  //
     8  // Users should prefer to use the groot package to open or create ROOT files instead of this one.
     9  package riofs // import "go-hep.org/x/hep/groot/riofs"
    10  
    11  import (
    12  	"go-hep.org/x/hep/groot/root"
    13  )
    14  
    15  //go:generate go run ./gen-code.go
    16  //go:generate go run ./gendata/gen-dirs.go -f ../testdata/dirs.root
    17  //go:generate go run ./gendata/gen-evnt-tree.go -f ../testdata/small-evnt-tree-nosplit.root
    18  //go:generate go run ./gendata/gen-evnt-tree.go -f ../testdata/small-evnt-tree-fullsplit.root -split=99
    19  //go:generate go run ./gendata/gen-flat-tree.go -f ../testdata/leaves.root
    20  //go:generate go run ./gendata/gen-map-tree.go -f ../testdata/std-map-split0.root -split=0
    21  //go:generate go run ./gendata/gen-map-tree.go -f ../testdata/std-map-split1.root -split=1
    22  //go:generate go run ./gendata/gen-map-tree.go -f ../testdata/std-map-split2.root -split=2
    23  //go:generate go run ./gendata/gen-multi-leaves-tree.go -f ../testdata/padding.root
    24  //go:generate go run ./gendata/gen-join-trees.go -d ../testdata
    25  //go:generate go run ./gendata/gen-bitset-tree.go -f ../testdata/std-bitset.root
    26  //go:generate go run ./gendata/gen-std-containers.go -f ../testdata/std-containers-split00.root -split=0
    27  //go:generate go run ./gendata/gen-tlv.go -f ../testdata/tlv-split00.root -split=0
    28  //go:generate go run ./gendata/gen-tlv.go -f ../testdata/tlv-split01.root -split=1
    29  //go:generate go run ./gendata/gen-tlv.go -f ../testdata/tlv-split99.root -split=99
    30  //go:generate go run ./gendata/gen-tntuple.go  -f ../testdata/tntuple.root
    31  //go:generate go run ./gendata/gen-tntupled.go -f ../testdata/tntupled.root
    32  //go:generate go run ./gendata/gen-tformula.go -f ../testdata/tformula.root
    33  //go:generate go run ./gendata/gen-tconflvl.go -f ../testdata/tconfidence-level.root
    34  //go:generate go run ./gendata/gen-tprofile.go -f ../testdata/tprofile.root
    35  //go:generate go run ./gendata/gen-tgme.go -f ../testdata/tgme.root
    36  //go:generate go run ./gendata/gen-tscatter.go -f ../testdata/tscatter.root
    37  //go:generate go run ./gendata/gen-tdatime.go -f ../testdata/tdatime.root
    38  //go:generate go run ./gendata/gen-base.go -f ../testdata/tbase.root
    39  //go:generate go run ./gendata/gen-tcanvas.go -f ../testdata/tcanvas.root
    40  
    41  // Directory describes a ROOT directory structure in memory.
    42  type Directory interface {
    43  	// Get returns the object identified by namecycle
    44  	//   namecycle has the format name;cycle
    45  	//   name  = * is illegal, cycle = * is illegal
    46  	//   cycle = "" or cycle = 9999 ==> apply to a memory object
    47  	//
    48  	//   examples:
    49  	//     foo   : get object named foo in memory
    50  	//             if object is not in memory, try with highest cycle from file
    51  	//     foo;1 : get cycle 1 of foo on file
    52  	Get(namecycle string) (root.Object, error)
    53  
    54  	// Put puts the object v under the key with the given name.
    55  	Put(name string, v root.Object) error
    56  
    57  	// Keys returns the list of keys being held by this directory.
    58  	Keys() []Key
    59  
    60  	// Mkdir creates a new subdirectory
    61  	Mkdir(name string) (Directory, error)
    62  
    63  	// Parent returns the directory holding this directory.
    64  	// Parent returns nil if this is the top-level directory.
    65  	Parent() Directory
    66  }
    67  
    68  // SetFiler is a simple interface to establish File ownership.
    69  type SetFiler interface {
    70  	SetFile(f *File)
    71  }