Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TFile Class Reference

A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-like logical structure, possibly including subdirectory hierarchies.

See also
Input/Output Library
ROOT files layout (or io/doc/TFile folder in your codebase)
ROOT file data format specification

A ROOT file is composed of a header, followed by consecutive data records (TKey instances) with a well defined format.

The first data record starts at byte fBEGIN (currently set to kBEGIN). Bytes 1->kBEGIN contain the file description, when fVersion >= 1000000 it is a large file (> 2 GB) and the offsets will be 8 bytes long and fUnits will be set to 8:

Byte Range Record Name Description
1->4 "root" Root file identifier
5->8 fVersion File format version
9->12 fBEGIN Pointer to first data record
13->16 [13->20] fEND Pointer to first free word at the EOF
17->20 [21->28] fSeekFree Pointer to FREE data record
21->24 [29->32] fNbytesFree Number of bytes in FREE data record
25->28 [33->36] nfree Number of free data records
29->32 [37->40] fNbytesName Number of bytes in TNamed at creation time
33->33 [41->41] fUnits Number of bytes for file pointers
34->37 [42->45] fCompress Compression level and algorithm
38->41 [46->53] fSeekInfo Pointer to TStreamerInfo record
42->45 [54->57] fNbytesInfo Number of bytes in TStreamerInfo record
46->63 [58->75] fUUID Universal Unique ID

For the purpose of magic bytes in the context of ROOT files' MIME definition, the following additional requirements are introduced:

  • The value of fBEGIN is fixed at 100.
  • The four bytes starting at position 96 are reserved and must be 0. If any changes to this need to be made, media-types@iana.org needs to be notified in accordance with RFC 6838.

The key structure is as follows; if a key is located past the 32 bit file limit (> 2 GB) then some fields will be 8 instead of 4 bytes (see parts marked with square brackets below):

Byte Range Member Name Description
1->4 Nbytes Length of compressed object (in bytes)
5->6 Version TKey version identifier
7->10 ObjLen Length of uncompressed object
11->14 Datime Date and time when object was written to file
15->16 KeyLen Length of the key structure (in bytes)
17->18 Cycle Cycle of key
19->22 [19->26] SeekKey Pointer to record itself (consistency check)
23->26 [27->34] SeekPdir Pointer to directory header
27->27 [35->35] lname Number of bytes in the class name
28->.. [36->..] ClassName Object Class Name
..->.. lname Number of bytes in the object name
..->.. Name lName bytes with the name of the object
..->.. lTitle Number of bytes in the object title
..->.. Title Title of the object
--—> DATA Data bytes associated to the object

The structure of a directory is shown in TDirectoryFile::TDirectoryFile

PyROOT

In the same way as for TDirectory, it is possible to get the content of a TFile object with the familiar item-getting syntax. For more information, please refer to the TDirectory documentation.

In addition, TFile instances can be inspected via the Get method, a feature that is inherited from TDirectoryFile (please see the documentation of TDirectoryFile for examples on how to use it).

In order to write objects into a TFile, the WriteObject Python method can be used (more information in the documentation of TDirectoryFile).

PyROOT modifies the TFile constructor and the TFile::Open method to make them behave in a more pythonic way. In particular, they both throw an OSError if there was a problem accessing the file (e.g. non-existent or corrupted file).

This class can also be used as a context manager, with the goal of opening a file and doing some quick manipulations of the objects inside it. The TFile::Close method will be automatically called at the end of the context. For example:

from ROOT import TFile
with TFile("file1.root", "recreate") as outfile:
hout = ROOT.TH1F(...)
outfile.WriteObject(hout, "myhisto")
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:53

Since the file is closed at the end of the context, all objects created or read from the file inside the context are not accessible anymore in the application (but they will be stored in the file if they were written to it). ROOT objects like histograms can be detached from a file with the SetDirectory method. This will leave the object untouched so that it can be accessed after the end of the context:

import ROOT
from ROOT import TFile
with TFile("file1.root", "read") as infile:
hin = infile.Get("myhisto")
hin.SetDirectory(ROOT.nullptr)
# Use the histogram afterwards
print(hin.GetName())
Note
The TFile::Close method automatically sets the current directory in the program to the gROOT object. If you want to restore the status of the current directory to some other file that was opened prior to the with statement, you can use the context manager functionality offered by TContext.

Definition at line 53 of file TFile.h.

Classes

struct  InfoListRet
 Simple struct of the return value of GetStreamerInfoListImpl. More...
 

Public Types

enum  { kStartBigFile = 2000000000 }
 
enum  EAsyncOpenStatus { kAOSNotAsync = -1 , kAOSFailure = 0 , kAOSInProgress = 1 , kAOSSuccess = 2 }
 Asynchronous open request status. More...
 
enum  ECacheAction { kDisconnect = 0 , kDoNotDisconnect = 1 }
 TTreeCache flushing semantics. More...
 
enum  EFileType {
  kDefault = 0 , kLocal = 1 , kNet = 2 , kWeb = 3 ,
  kFile = 4 , kMerge = 5
}
 File type. More...
 
enum  EOpenTimeOut { kInstantTimeout = 0 , kEternalTimeout = 999999999 }
 Open timeout constants. More...
 
enum  ERelativeTo { kBeg = 0 , kCur = 1 , kEnd = 2 }
 
enum  EStatusBits {
  k630forwardCompatibility = (1ULL << ( 2 )) , kRecovered = (1ULL << ( 10 )) , kHasReferences = (1ULL << ( 11 )) , kDevNull = (1ULL << ( 12 )) ,
  kWriteError = (1ULL << ( 14 )) , kBinaryFile = (1ULL << ( 15 )) , kRedirected = (1ULL << ( 16 )) , kReproducible = (1ULL << ( 17 ))
}
 TFile status bits. BIT(13) is taken up by TObject. More...
 
- Public Types inherited from TDirectoryFile
enum  EStatusBits { kCloseDirectory = (1ULL << ( 7 )) }
 
- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) }
 
enum  EStatusBits {
  kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) ,
  kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 ))
}
 

Public Member Functions

 TFile ()
 File default Constructor.
 
 TFile (const char *fname, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
 Opens or creates a local ROOT file.
 
 ~TFile () override
 File destructor.
 
void Close (Option_t *option="") override
 Close a file.
 
void Copy (TObject &) const override
 Copy this to obj.
 
virtual Bool_t Cp (const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
 Allows to copy this file to the dst URL.
 
virtual TKeyCreateKey (TDirectory *mother, const TObject *obj, const char *name, Int_t bufsize)
 Creates key for object and converts data to buffer.
 
virtual TKeyCreateKey (TDirectory *mother, const void *obj, const TClass *cl, const char *name, Int_t bufsize)
 Creates key for object and converts data to buffer.
 
void Delete (const char *namecycle="") override
 Delete object namecycle.
 
void Draw (Option_t *option="") override
 Fill Graphics Structure and Paint.
 
virtual void DrawMap (const char *keys="*", Option_t *option="")
 Draw map of objects in this file.
 
void FillBuffer (char *&buffer) override
 Encode file output buffer.
 
virtual void Flush ()
 Synchronize a file's in-memory and on-disk states.
 
TArchiveFileGetArchive () const
 
Long64_t GetArchiveOffset () const
 
Int_t GetBestBuffer () const
 Return the best buffer size of objects on this file.
 
virtual Long64_t GetBytesRead () const
 
virtual Long64_t GetBytesReadExtra () const
 
virtual Int_t GetBytesToPrefetch () const
 Max number of bytes to prefetch.
 
virtual Long64_t GetBytesWritten () const
 Return the total number of bytes written so far to the file.
 
TFileCacheReadGetCacheRead (const TObject *tree=nullptr) const
 Return a pointer to the current read cache.
 
TFileCacheWriteGetCacheWrite () const
 Return a pointer to the current write cache.
 
TArrayCGetClassIndex () const
 
Int_t GetCompressionAlgorithm () const
 
Float_t GetCompressionFactor ()
 Return the file compression factor.
 
Int_t GetCompressionLevel () const
 
Int_t GetCompressionSettings () const
 
virtual Long64_t GetEND () const
 
virtual const TUrlGetEndpointUrl () const
 
virtual Int_t GetErrno () const
 Method returning errno.
 
Int_t GetFd () const
 
TListGetListOfFree () const
 
TObjArrayGetListOfProcessIDs () const
 
virtual Int_t GetNbytesFree () const
 
virtual Int_t GetNbytesInfo () const
 
virtual TString GetNewUrl ()
 
virtual Int_t GetNfree () const
 
virtual Int_t GetNProcessIDs () const
 
Option_tGetOption () const override
 
virtual Int_t GetReadCalls () const
 
Int_t GetRecordHeader (char *buf, Long64_t first, Int_t maxbytes, Int_t &nbytes, Int_t &objlen, Int_t &keylen)
 Read the logical record header starting at a certain postion.
 
Long64_t GetRelOffset () const
 
virtual Long64_t GetSeekFree () const
 
virtual Long64_t GetSeekInfo () const
 
virtual Long64_t GetSize () const
 Returns the current file size.
 
const TListGetStreamerInfoCache ()
 Returns the cached list of StreamerInfos used in this file.
 
virtual TListGetStreamerInfoList () final
 Read the list of TStreamerInfo objects written to this file.
 
Int_t GetVersion () const
 
virtual void IncrementProcessIDs ()
 
TClassIsA () const override
 
virtual Bool_t IsArchive () const
 
Bool_t IsBinary () const
 
virtual Bool_t IsOpen () const
 Returns kTRUE in case file is open and kFALSE if file is not open.
 
Bool_t IsRaw () const
 
void ls (Option_t *option="") const override
 List file contents.
 
virtual void MakeFree (Long64_t first, Long64_t last)
 Mark unused bytes on the file.
 
virtual void MakeProject (const char *dirname, const char *classes="*", Option_t *option="new")
 Generate source code necessary to access the objects stored in the file.
 
virtual void Map ()
 
virtual void Map (Option_t *opt)
 List the contents of a file sequentially.
 
virtual Bool_t Matches (const char *name)
 Return kTRUE if 'url' matches the coordinates of this file.
 
virtual Bool_t MustFlush () const
 
void Paint (Option_t *option="") override
 Paint all objects in the file.
 
void Print (Option_t *option="") const override
 Print all objects in the file.
 
virtual Bool_t ReadBuffer (char *buf, Int_t len)
 Read a buffer from the file.
 
virtual Bool_t ReadBuffer (char *buf, Long64_t pos, Int_t len)
 Read a buffer from the file at the offset 'pos' in the file.
 
virtual Bool_t ReadBufferAsync (Long64_t offs, Int_t len)
 
virtual Bool_t ReadBuffers (char *buf, Long64_t *pos, Int_t *len, Int_t nbuf)
 Read the nbuf blocks described in arrays pos and len.
 
virtual void ReadFree ()
 Read the FREE linked list.
 
virtual TProcessIDReadProcessID (UShort_t pidf)
 The TProcessID with number pidf is read from this file.
 
virtual void ReadStreamerInfo ()
 Read the list of StreamerInfo from this file.
 
virtual Int_t Recover ()
 Attempt to recover file if not correctly closed.
 
virtual Int_t ReOpen (Option_t *mode)
 Reopen a file with a different access mode.
 
virtual void ResetErrno () const
 Method resetting the errno.
 
virtual void Seek (Long64_t offset, ERelativeTo pos=kBeg)
 Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.
 
virtual void SetCacheRead (TFileCacheRead *cache, TObject *tree=nullptr, ECacheAction action=kDisconnect)
 Set a pointer to the read cache.
 
virtual void SetCacheWrite (TFileCacheWrite *cache)
 Set a pointer to the write cache.
 
virtual void SetCompressionAlgorithm (Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
 See comments for function SetCompressionSettings.
 
virtual void SetCompressionLevel (Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
 See comments for function SetCompressionSettings.
 
virtual void SetCompressionSettings (Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
 Used to specify the compression level and algorithm.
 
virtual void SetEND (Long64_t last)
 
virtual void SetOffset (Long64_t offset, ERelativeTo pos=kBeg)
 Set position from where to start reading.
 
virtual void SetOption (Option_t *option=">")
 
virtual void SetReadCalls (Int_t readcalls=0)
 
virtual void ShowStreamerInfo ()
 Show the StreamerInfo of all classes written to this file.
 
Int_t Sizeof () const override
 Return the size in bytes of the file header.
 
void Streamer (TBuffer &) override
 Stream a TFile object.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
void SumBuffer (Int_t bufsize)
 Increment statistics for buffer sizes of objects in this file.
 
Int_t Write (const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) const override
 One can not save a const TDirectory object.
 
Int_t Write (const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) override
 Write memory objects to this file.
 
virtual Bool_t WriteBuffer (const char *buf, Int_t len)
 Write a buffer to the file.
 
virtual void WriteFree ()
 Write FREE linked list on the file.
 
virtual void WriteHeader ()
 Write File Header.
 
virtual UShort_t WriteProcessID (TProcessID *pid)
 Check if the ProcessID pidd is already in the file, if not, add it and return the index number in the local file list.
 
virtual void WriteStreamerInfo ()
 Write the list of TStreamerInfo as a single object in this file The class Streamer description for all classes written to this file is saved.
 
- Public Member Functions inherited from TDirectoryFile
 TDirectoryFile ()
 Default TDirectoryFile constructor.
 
 TDirectoryFile (const char *name, const char *title, Option_t *option="", TDirectory *motherDir=nullptr)
 Create a new TDirectoryFile.
 
 ~TDirectoryFile () override
 Destructor.
 
void Add (TObject *obj, Bool_t replace=kFALSE) override
 
void Append (TObject *obj, Bool_t replace=kFALSE) override
 Append object to this directory.
 
Int_t AppendKey (TKey *key) override
 Insert key in the linked list of keys of this directory.
 
void Browse (TBrowser *b) override
 Browse the content of the directory.
 
void Build (TFile *motherFile=nullptr, TDirectory *motherDir=nullptr) override
 
Bool_t cd () override
 Change current directory to "this" directory.
 
Bool_t cd (const char *path) override
 Change current directory the directory described by the path if given one.
 
TObjectCloneObject (const TObject *obj, Bool_t autoadd=kTRUE) override
 Make a clone of an object using the Streamer facility.
 
TKeyFindKey (const char *keyname) const override
 Find key with name keyname in the current directory.
 
TKeyFindKeyAny (const char *keyname) const override
 Find key with name keyname in the current directory or its subdirectories.
 
TObjectFindObjectAny (const char *name) const override
 Find object by name in the list of memory objects of the current directory or its sub-directories.
 
TObjectFindObjectAnyFile (const char *name) const override
 Scan the memory lists of all files for an object with name.
 
template<class T >
T * Get (const char *namecycle)
 See documentation of TDirectoryFile::Get(const char *namecycle)
 
TObjectGet (const char *namecycle) override
 Return pointer to object identified by namecycle.
 
Int_t GetBufferSize () const override
 Return the buffer size to create new TKeys.
 
const TDatimeGetCreationDate () const
 
TDirectoryGetDirectory (const char *apath, Bool_t printError=false, const char *funcname="GetDirectory") override
 Find a directory named "apath".
 
TFileGetFile () const override
 
TKeyGetKey (const char *name, Short_t cycle=9999) const override
 Return pointer to key with name,cycle.
 
TListGetListOfKeys () const override
 
const TDatimeGetModificationDate () const
 
Int_t GetNbytesKeys () const override
 
Int_t GetNkeys () const override
 
void * GetObjectChecked (const char *namecycle, const char *classname) override
 See documentation of TDirectoryFile::GetObjectCheck(const char *namecycle, const TClass *cl)
 
void * GetObjectChecked (const char *namecycle, const TClass *cl) override
 Return pointer to object identified by namecycle if and only if the actual object is a type suitable to be stored as a pointer to a "expectedClass" If expectedClass is null, no check is performed.
 
void * GetObjectUnchecked (const char *namecycle) override
 Return pointer to object identified by namecycle.
 
Long64_t GetSeekDir () const override
 
Long64_t GetSeekKeys () const override
 
Long64_t GetSeekParent () const override
 
Bool_t IsModified () const override
 
Bool_t IsWritable () const override
 
TDirectorymkdir (const char *name, const char *title="", Bool_t returnExistingDirectory=kFALSE) override
 Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
 
TFileOpenFile (const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0) override
 Interface to TFile::Open.
 
void Purge (Short_t nkeep=1) override
 Purge lowest key cycles in a directory.
 
void ReadAll (Option_t *option="") override
 Read objects from a ROOT file directory into memory.
 
Int_t ReadKeys (Bool_t forceRead=kTRUE) override
 Read the linked list of keys.
 
Int_t ReadTObject (TObject *obj, const char *keyname) override
 Read object with keyname from the current directory.
 
virtual void ResetAfterMerge (TFileMergeInfo *)
 Reset the TDirectory after its content has been merged into another Directory.
 
void rmdir (const char *name) override
 Removes subdirectory from the directory.
 
void Save () override
 Save recursively all directory keys and headers.
 
Int_t SaveObjectAs (const TObject *obj, const char *filename="", Option_t *option="") const override
 Save object in filename.
 
void SaveSelf (Bool_t force=kFALSE) override
 Save Directory keys and header.
 
void SetBufferSize (Int_t bufsize) override
 Set the default buffer size when creating new TKeys.
 
void SetModified () override
 
void SetSeekDir (Long64_t v) override
 
void SetTRefAction (TObject *ref, TObject *parent) override
 Find the action to be executed in the dictionary of the parent class and store the corresponding exec number into fBits.
 
void SetWritable (Bool_t writable=kTRUE) override
 Set the new value of fWritable recursively.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
void WriteDirHeader () override
 Overwrite the Directory header record.
 
void WriteKeys () override
 Write Keys linked list on the file.
 
Int_t WriteObjectAny (const void *obj, const char *classname, const char *name, Option_t *option="", Int_t bufsize=0) override
 Write object from pointer of class classname in this directory.
 
Int_t WriteObjectAny (const void *obj, const TClass *cl, const char *name, Option_t *option="", Int_t bufsize=0) override
 Write object of class with dictionary cl in this directory.
 
Int_t WriteTObject (const TObject *obj, const char *name=nullptr, Option_t *option="", Int_t bufsize=0) override
 Write object obj to this directory.
 
- Public Member Functions inherited from TDirectory
 TDirectory ()
 Directory default constructor.
 
 TDirectory (const char *name, const char *title, Option_t *option="", TDirectory *motherDir=nullptr)
 Create a new Directory.
 
virtual ~TDirectory ()
 Destructor.
 
void Clear (Option_t *option="") override
 Delete all objects from a Directory list.
 
virtual void DeleteAll (Option_t *option="")
 Delete all objects from memory.
 
TObjectFindObject (const char *name) const override
 Find object by name in the list of memory objects.
 
TObjectFindObject (const TObject *obj) const override
 Find object in the list of memory objects.
 
template<class T >
T * Get (const char *namecycle)
 See documentation of TDirectoryFile::Get(const char *namecycle)
 
virtual TListGetList () const
 
TObjectGetMother () const
 
TDirectoryGetMotherDir () const
 
template<class T >
void GetObject (const char *namecycle, T *&ptr)
 Get an object with proper type checking.
 
virtual const char * GetPath () const
 Returns the full path of the directory.
 
virtual const char * GetPathStatic () const
 Returns the full path of the directory.
 
TUUID GetUUID () const
 
Bool_t IsBuilt () const
 
Bool_t IsFolder () const override
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
 
virtual void pwd () const
 Print the path of the directory.
 
void RecursiveRemove (TObject *obj) override
 Recursively remove object from a Directory.
 
virtual TObjectRemove (TObject *)
 Remove an object from the in-memory list.
 
virtual void SetMother (TObject *mother)
 
void SetName (const char *newname) override
 Set the name for directory If the directory name is changed after the directory was written once, ROOT currently would NOT change the name of correspondent key in the mother directory.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
template<typename T >
std::enable_if_t<!std::is_base_of< TObject, T >::value, Int_tWriteObject (const T *obj, const char *name, Option_t *option="", Int_t bufsize=0)
 Write an object with proper type checking.
 
template<typename T >
std::enable_if_t< std::is_base_of< TObject, T >::value, Int_tWriteObject (const T *obj, const char *name, Option_t *option="", Int_t bufsize=0)
 Write an object with proper type checking.
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 TNamed copy ctor.
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 TNamed destructor.
 
void Clear (Option_t *option="") override
 Set name and title to empty strings ("").
 
TObjectClone (const char *newname="") const override
 Make a clone of an object using the Streamer facility.
 
Int_t Compare (const TObject *obj) const override
 Compare two TNamed objects.
 
void Copy (TObject &named) const override
 Copy this to obj.
 
const char * GetName () const override
 Returns name of object.
 
const char * GetTitle () const override
 Returns title of object.
 
ULong_t Hash () const override
 Return hash value for this object.
 
TClassIsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 List TNamed name and title.
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator.
 
void Print (Option_t *option="") const override
 Print TNamed name and title.
 
virtual void SetNameTitle (const char *name, const char *title)
 Set all the TNamed parameters (name and title).
 
virtual void SetTitle (const char *title="")
 Set the title of the TNamed.
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor.
 
 TObject (const TObject &object)
 TObject copy ctor.
 
virtual ~TObject ()
 TObject destructor.
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract.
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad.
 
ULong_t CheckedHash ()
 Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs.
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object.
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs.
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1).
 
virtual void Dump () const
 Dump contents of object on stdout.
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message.
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 Execute method on this object with the given parameter string, e.g.
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 Execute method on this object with parameters stored in the TObjArray.
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py).
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message.
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object.
 
virtual const char * GetIconName () const
 Returns mime type name of object.
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py).
 
virtual UInt_t GetUniqueID () const
 Return the unique object id.
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out.
 
Bool_t HasInconsistentHash () const
 Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message.
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname".
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl.
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas.
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 IsDestructed.
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory).
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification (the base implementation is no-op).
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete.
 
void operator delete (void *ptr)
 Operator delete.
 
void operator delete (void *ptr, void *vp)
 Only called by placement new when throwing an exception.
 
void operator delete[] (void *ptr)
 Operator delete [].
 
void operator delete[] (void *ptr, void *vp)
 Only called by placement new[] when throwing an exception.
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *vp)
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator.
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list.
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory.
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename.
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out".
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f.
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object.
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message.
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked.
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message.
 

Static Public Member Functions

static TFileOpenHandleAsyncOpen (const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
 Submit an asynchronous open request.
 
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static Bool_t Cp (const char *src, const char *dst, Bool_t progressbar=kTRUE, UInt_t buffersize=1000000)
 Allows to copy file from src to dst URL.
 
static TFile *& CurrentFile ()
 Return the current ROOT file if any.
 
static const char * DeclFileName ()
 
static EAsyncOpenStatus GetAsyncOpenStatus (const char *name)
 Get status of the async open request related to 'name'.
 
static EAsyncOpenStatus GetAsyncOpenStatus (TFileOpenHandle *handle)
 Get status of the async open request related to 'handle'.
 
static const char * GetCacheFileDir ()
 Get the directory where to locally stage/cache remote files.
 
static const TUrlGetEndpointUrl (const char *name)
 Get final URL for file being opened asynchronously.
 
static Long64_t GetFileBytesRead ()
 Static function returning the total number of bytes read from all files.
 
static Long64_t GetFileBytesWritten ()
 Static function returning the total number of bytes written to all files.
 
static Long64_t GetFileCounter ()
 
static Int_t GetFileReadCalls ()
 Static function returning the total number of read calls from all files.
 
static Bool_t GetOnlyStaged ()
 Returns staged only flag.
 
static UInt_t GetOpenTimeout ()
 Returns open timeout (in ms).
 
static Int_t GetReadaheadSize ()
 Static function returning the readahead buffer size.
 
static Bool_t GetReadStreamerInfo ()
 If the streamerinfos are to be read at file opening.
 
static EFileType GetType (const char *name, Option_t *option="", TString *prefix=nullptr)
 Resolve the file type as a function of the protocol field in 'name'.
 
static void IncrementFileCounter ()
 
static TFileOpen (const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
 Create / open a file.
 
static TFileOpen (TFileOpenHandle *handle)
 Waits for the completion of an asynchronous open request.
 
static Bool_t SetCacheFileDir (std::string_view cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
 Sets the directory where to locally stage/cache remote files.
 
static void SetFileBytesRead (Long64_t bytes=0)
 
static void SetFileBytesWritten (Long64_t bytes=0)
 
static void SetFileReadCalls (Int_t readcalls=0)
 
static Bool_t SetOnlyStaged (Bool_t onlystaged)
 Sets only staged flag.
 
static UInt_t SetOpenTimeout (UInt_t timeout)
 Sets open timeout time (in ms). Returns previous timeout value.
 
static void SetReadaheadSize (Int_t bufsize=256000)
 
static void SetReadStreamerInfo (Bool_t readinfo=kTRUE)
 Specify if the streamerinfos must be read at file opening.
 
static Bool_t ShrinkCacheFileDir (Long64_t shrinkSize, Long_t cleanupInteval=0)
 Try to shrink the cache to the desired size.
 
- Static Public Member Functions inherited from TDirectoryFile
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TDirectory
static void AddDirectory (Bool_t add=kTRUE)
 Sets the flag controlling the automatic add objects like histograms, TGraph2D, etc in memory.
 
static Bool_t AddDirectoryStatus ()
 Static function: see TDirectory::AddDirectory for more comments.
 
static Bool_t Cd (const char *path)
 Change current directory to "path".
 
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static std::atomic< TDirectory * > & CurrentDirectory ()
 Return the current directory for the current thread.
 
static const char * DeclFileName ()
 
static void DecodeNameCycle (const char *namecycle, char *name, Short_t &cycle, const size_t namesize=0)
 Decode a namecycle "aap;2" into name "aap" and cycle "2".
 
- Static Public Member Functions inherited from TNamed
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_t GetDtorOnly ()
 Return destructor only flag.
 
static Bool_t GetObjectStat ()
 Get status of object stat flag.
 
static void SetDtorOnly (void *obj)
 Set destructor only flag.
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable.
 

Protected Member Functions

virtual Long64_t DirCreateEntry (TDirectory *)
 
virtual Int_t DirReadKeys (TDirectory *)
 
virtual void DirWriteHeader (TDirectory *)
 
virtual void DirWriteKeys (TDirectory *)
 
Bool_t FlushWriteCache ()
 Flush the write cache if active.
 
virtual EAsyncOpenStatus GetAsyncOpenStatus ()
 
virtual InfoListRet GetStreamerInfoListImpl (bool lookupSICache)
 See documentation of GetStreamerInfoList for more details.
 
virtual void Init (Bool_t create)
 Initialize a TFile object.
 
Int_t MakeProjectParMake (const char *packname, const char *filename)
 Create makefile at 'filemake' for PAR package 'pack'.
 
Int_t MakeProjectParProofInf (const char *packname, const char *proofinfdir)
 Create BUILD.sh and SETUP.C under 'proofinf' for PAR package 'pack'.
 
Int_t ReadBufferViaCache (char *buf, Int_t len)
 Read buffer via cache.
 
virtual Int_t SysClose (Int_t fd)
 Interface to system close. All arguments like in POSIX close().
 
virtual Int_t SysOpen (const char *pathname, Int_t flags, UInt_t mode)
 Interface to system open. All arguments like in POSIX open().
 
virtual Int_t SysRead (Int_t fd, void *buf, Int_t len)
 Interface to system read. All arguments like in POSIX read().
 
virtual Long64_t SysSeek (Int_t fd, Long64_t offset, Int_t whence)
 Interface to system lseek.
 
virtual Int_t SysStat (Int_t fd, Long_t *id, Long64_t *size, Long_t *flags, Long_t *modtime)
 Return file stat information.
 
virtual Int_t SysSync (Int_t fd)
 Interface to system fsync. All arguments like in POSIX fsync().
 
virtual Int_t SysWrite (Int_t fd, const void *buf, Int_t len)
 Interface to system write. All arguments like in POSIX write().
 
Int_t WriteBufferViaCache (const char *buf, Int_t len)
 Write buffer via cache.
 
- Protected Member Functions inherited from TDirectoryFile
void BuildDirectoryFile (TFile *motherFile, TDirectory *motherDir)
 Initialise directory to defaults.
 
void CleanTargets ()
 Clean the pointers to this object (gDirectory, TContext, etc.)
 
void InitDirectoryFile (TClass *cl=nullptr)
 Initialize the key associated with this directory (and the related data members.
 
- Protected Member Functions inherited from TDirectory
 TDirectory (const TDirectory &directory)=delete
 
void BuildDirectory (TFile *motherFile, TDirectory *motherDir)
 Initialise directory to defaults.
 
Bool_t cd1 (const char *path)
 flag to add histograms, graphs,etc to the directory
 
void CleanTargets ()
 Clean the pointers to this object (gDirectory, TContext, etc.).
 
void FillFullPath (TString &buf) const
 Recursive method to fill full path for directory.
 
void operator= (const TDirectory &)=delete
 
void RegisterContext (TContext *ctxt)
 Register a TContext pointing to this TDirectory object.
 
void RegisterGDirectory (SharedGDirectory_t &ptr)
 Register a std::atomic<TDirectory*> that will soon be pointing to this TDirectory object.
 
void UnregisterContext (TContext *ctxt)
 UnRegister a TContext pointing to this TDirectory object.
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected).
 
void MakeZombie ()
 

Protected Attributes

TArchiveFilefArchive {nullptr}
 !Archive file from which we read this file
 
Long64_t fArchiveOffset {0}
 !Offset at which file starts in archive
 
TFileOpenHandlefAsyncHandle {nullptr}
 !For proper automatic cleanup
 
EAsyncOpenStatus fAsyncOpenStatus {kAOSNotAsync}
 !Status of an asynchronous open request
 
Long64_t fBEGIN {0}
 First used byte in file.
 
Long64_t fBytesRead {0}
 Number of bytes read from this file.
 
Long64_t fBytesReadExtra {0}
 Number of extra bytes (overhead) read by the readahead buffer.
 
Long64_t fBytesWrite {0}
 Number of bytes written to this file.
 
TFileCacheReadfCacheRead {nullptr}
 !Pointer to the read cache (if any)
 
TMapfCacheReadMap {nullptr}
 !Pointer to the read cache (if any)
 
TFileCacheWritefCacheWrite {nullptr}
 !Pointer to the write cache (if any)
 
TArrayCfClassIndex {nullptr}
 !Index of TStreamerInfo classes written to this file
 
Int_t fCompress {0}
 Compression level and algorithm.
 
Int_t fD {-1}
 File descriptor.
 
Long64_t fEND {0}
 Last used byte in file.
 
TListfFree {nullptr}
 Free segments linked list table.
 
bool fGlobalRegistration = true
 ! if true, bypass use of global lists
 
TListfInfoCache {nullptr}
 !Cached list of the streamer infos in this file
 
Bool_t fInitDone {kFALSE}
 !True if the file has been initialized
 
Bool_t fIsArchive {kFALSE}
 !True if this is a pure archive file
 
Bool_t fIsPcmFile {kFALSE}
 !True if the file is a ROOT pcm file.
 
Bool_t fIsRootFile {kTRUE}
 !True is this is a ROOT file, raw file otherwise
 
Bool_t fMustFlush {kTRUE}
 !True if the file buffers must be flushed
 
Int_t fNbytesFree {0}
 Number of bytes for free segments structure.
 
Int_t fNbytesInfo {0}
 Number of bytes for StreamerInfo record.
 
Bool_t fNoAnchorInName {kFALSE}
 !True if we don't want to force the anchor to be appended to the file name
 
Int_t fNProcessIDs {0}
 Number of TProcessID written to this file.
 
Long64_t fOffset {0}
 !Seek offset cache
 
TListfOpenPhases {nullptr}
 !Time info about open phases
 
TString fOption
 File options.
 
TObjArrayfProcessIDs {nullptr}
 !Array of pointers to TProcessIDs
 
Int_t fReadCalls {0}
 Number of read calls ( not counting the cache calls )
 
TString fRealName
 Effective real file name (not original url)
 
Long64_t fSeekFree {0}
 Location on disk of free segments structure.
 
Long64_t fSeekInfo {0}
 Location on disk of StreamerInfo record.
 
Double_t fSum2Buffer {0}
 Sum of squares of buffer sizes of objects written so far.
 
Double_t fSumBuffer {0}
 Sum of buffer sizes of objects written so far.
 
Char_t fUnits {0}
 Number of bytes for file pointers.
 
TUrl fUrl
 !URL of file
 
Int_t fVersion {0}
 File format version.
 
std::mutex fWriteMutex
 !Lock for writing baskets / keys into the file.
 
Int_t fWritten {0}
 Number of objects written so far.
 
- Protected Attributes inherited from TDirectoryFile
Int_t fBufferSize {0}
 Default buffer size to create new TKeys.
 
TDatime fDatimeC
 Date and time when directory is created.
 
TDatime fDatimeM
 Date and time of last modification.
 
TFilefFile {nullptr}
 Pointer to current file in memory.
 
TListfKeys {nullptr}
 Pointer to keys list in memory.
 
Bool_t fModified {kFALSE}
 True if directory has been modified.
 
Int_t fNbytesKeys {0}
 Number of bytes for the keys.
 
Int_t fNbytesName {0}
 Number of bytes in TNamed at creation time.
 
Long64_t fSeekDir {0}
 Location of directory on file.
 
Long64_t fSeekKeys {0}
 Location of Keys record on file.
 
Long64_t fSeekParent {0}
 Location of parent directory on file.
 
Bool_t fWritable {kFALSE}
 True if directory is writable.
 
- Protected Attributes inherited from TDirectory
TContextfContext {nullptr}
 Buffer for GetPath() function.
 
std::atomic< size_t > fContextPeg {0}
 thread local gDirectory pointing to this object.
 
std::vector< SharedGDirectory_tfGDirectories
 
TListfList {nullptr}
 
TObjectfMother {nullptr}
 
TString fPathBuffer
 
std::atomic_flag fSpinLock
 Counter delaying the TDirectory destructor from finishing.
 
TUUID fUUID
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Static Protected Attributes

static TListfgAsyncOpenRequests = nullptr
 
static std::atomic< Long64_tfgBytesRead {0}
 Number of bytes read by all TFile objects.
 
static std::atomic< Long64_tfgBytesWrite {0}
 Number of bytes written by all TFile objects.
 
static TString fgCacheFileDir
 Directory where to locally stage files.
 
static Bool_t fgCacheFileDisconnected = kTRUE
 Indicates, we trust in the files in the cache dir without stat on the cached file.
 
static Bool_t fgCacheFileForce = kFALSE
 Indicates, to force all READ to CACHEREAD.
 
static std::atomic< Long64_tfgFileCounter {0}
 Counter for all opened files.
 
static Bool_t fgOnlyStaged = kFALSE
 Before the file is opened, it is checked, that the file is staged, if not, the open fails.
 
static UInt_t fgOpenTimeout = TFile::kEternalTimeout
 Timeout for open operations in ms - 0 corresponds to blocking i/o.
 
static Int_t fgReadaheadSize = 256000
 Readahead buffer size.
 
static std::atomic< Int_tfgReadCalls {0}
 Number of bytes read from all TFile objects.
 
static Bool_t fgReadInfo = kTRUE
 if true (default) ReadStreamerInfo is called when opening a file
 
static ROOT::Internal::RConcurrentHashColl fgTsSIHashes
 !TS Set of hashes built from read streamer infos
 
- Static Protected Attributes inherited from TDirectory
static Bool_t fgAddDirectory = kTRUE
 MSVC doesn't support = ATOMIC_FLAG_INIT;.
 

Private Member Functions

 TFile (const TFile &)=delete
 
void operator= (const TFile &)=delete
 

Static Private Member Functions

static void CpProgress (Long64_t bytesread, Long64_t size, TStopwatch &watch)
 Print file copy progress.
 
static TFileOpenFromCache (const char *name, Option_t *="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
 Open a file for reading through the file cache.
 

Friends

class TBasket
 
class TDirectoryFile
 
class TFilePrefetch
 

Additional Inherited Members

- Protected Types inherited from TDirectory
using SharedGDirectory_t = std::shared_ptr< std::atomic< TDirectory * > >
 Pointer to a list of TContext object pointing to this TDirectory.
 
- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 
- Static Protected Member Functions inherited from TDirectory
static Bool_t Cd1 (const char *path)
 Change current directory to "path".
 
static SharedGDirectory_tGetSharedLocalCurrentDirectory ()
 Return the (address of) a shared pointer to the struct holding the actual thread local gDirectory pointer and the atomic_flag for its lock.
 

#include <TFile.h>

Inheritance diagram for TFile:
[legend]

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kStartBigFile 

Definition at line 200 of file TFile.h.

◆ EAsyncOpenStatus

Asynchronous open request status.

Enumerator
kAOSNotAsync 
kAOSFailure 
kAOSInProgress 
kAOSSuccess 

Definition at line 64 of file TFile.h.

◆ ECacheAction

TTreeCache flushing semantics.

Enumerator
kDisconnect 
kDoNotDisconnect 

Definition at line 70 of file TFile.h.

◆ EFileType

File type.

Enumerator
kDefault 
kLocal 
kNet 
kWeb 
kFile 
kMerge 

Definition at line 202 of file TFile.h.

◆ EOpenTimeOut

Open timeout constants.

Enumerator
kInstantTimeout 
kEternalTimeout 

Definition at line 67 of file TFile.h.

◆ ERelativeTo

Enumerator
kBeg 
kCur 
kEnd 

Definition at line 199 of file TFile.h.

◆ EStatusBits

TFile status bits. BIT(13) is taken up by TObject.

Enumerator
k630forwardCompatibility 
kRecovered 
kHasReferences 
kDevNull 
kWriteError 
kBinaryFile 
kRedirected 
kReproducible 

Definition at line 183 of file TFile.h.

Constructor & Destructor Documentation

◆ TFile() [1/3]

TFile::TFile ( const TFile )
privatedelete

◆ TFile() [2/3]

TFile::TFile ( )

File default Constructor.

Definition at line 201 of file TFile.cxx.

◆ TFile() [3/3]

TFile::TFile ( const char *  fname1,
Option_t option = "",
const char *  ftitle = "",
Int_t  compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault 
)

Opens or creates a local ROOT file.

Parameters
[in]fname1The name of the file
[in]optionSpecifies the mode in which the file is opened
[in]ftitleThe title of the file
[in]compressSpecifies the compression algorithm and level

It is recommended to specify fname1 as "<file>.root". The suffix ".root" will be used by object browsers to automatically identify the file as a ROOT file. If the constructor fails in any way IsZombie() will return true. Use IsOpen() to check if the file is (still) open. To open non-local files use the static TFile::Open() method, that will take care of opening the files using the correct remote file access plugin.

Option Description
NEW or CREATE Create a new file and open it for writing, if the file already exists the file is not opened.
RECREATE Create a new file, if the file already exists it will be overwritten.
UPDATE Open an existing file for writing. If no file exists, it is created.
READ Open an existing file for reading (default).
NET Used by derived remote file access classes, not a user callable option.
WEB Used by derived remote http access class, not a user callable option.
READ_WITHOUT_GLOBALREGISTRATION Used by TTreeProcessorMT, not a user callable option.

If option = "" (default), READ is assumed. The file can be specified as a URL of the form:

file:///user/rdm/bla.root or file:/user/rdm/bla.root

The file can also be a member of an archive, in which case it is specified as:

multi.zip#file.root or multi.zip#0

which will open file.root which is a member of the file multi.zip archive or member 1 from the archive. For more on archive file support see the TArchiveFile class. TFile and its remote access plugins can also be used to open any file, i.e. also non ROOT files, using:

file.tar?filetype=raw

This is convenient because the many remote file access plugins allow easy access to/from the many different mass storage systems. The title of the file (ftitle) will be shown by the ROOT browsers. A ROOT file (like a Unix file system) may contain objects and directories. There are no restrictions for the number of levels of directories. A ROOT file is designed such that one can write in the file in pure sequential mode (case of BATCH jobs). In this case, the file may be read sequentially again without using the file index written at the end of the file. In case of a job crash, all the information on the file is therefore protected. A ROOT file can be used interactively. In this case, one has the possibility to delete existing objects and add new ones. When an object is deleted from the file, the freed space is added into the FREE linked list (fFree). The FREE list consists of a chain of consecutive free segments on the file. At the same time, the first 4 bytes of the freed record on the file are overwritten by GAPSIZE where GAPSIZE = -(Number of bytes occupied by the record). Option compress is used to specify the compression level and algorithm:

compress = 100 * algorithm + level
Level Explanation
0 objects written to this file will not be compressed.
1 minimal compression level but fast.
... ....
9 maximal compression level but slower and might use more memory.

(For the currently supported algorithms, the maximum level is 9) If compress is negative it indicates the compression level is not set yet. The enumeration ROOT::RCompressionSetting::EAlgorithm associates each algorithm with a number. There is a utility function to help to set the value of compress. For example, ROOT::CompressionSettings(ROOT::kLZMA, 1) will build an integer which will set the compression to use the LZMA algorithm and compression level 1. These are defined in the header file Compression.h. Note that the compression settings may be changed at any time. The new compression settings will only apply to branches created or attached after the setting is changed and other objects written after the setting is changed. In case the file does not exist or is not a valid ROOT file, it is made a Zombie. One can detect this situation with a code like:

TFile f("file.root");
if (f.IsZombie()) {
std::cout << "Error opening file" << std::endl;
exit(-1);
}
#define f(i)
Definition RSha256.hxx:104

If you open a file instead with TFile::Open("file.root") use rather the following code as a nullptr is returned.

TFile* f = TFile::Open("file.root");
if (!f) {
std::cout << "Error opening file" << std::endl;
exit(-1);
}
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Definition TFile.cxx:4089

When opening the file, the system checks the validity of this directory. If something wrong is detected, an automatic Recovery is performed. In this case, the file is scanned sequentially reading all logical blocks and attempting to rebuild a correct directory (see TFile::Recover). One can disable the automatic recovery procedure when reading one or more files by setting the environment variable "TFile.Recover: 0" in the system.rootrc file.

A bit TFile::kReproducible can be enabled specifying the "reproducible" url option when creating the file:

TFile *f = TFile::Open("name.root?reproducible","RECREATE","File title");

Unlike regular TFiles, the content of such file has reproducible binary content when writing exactly same data. This achieved by writing pre-defined values for creation and modification date of TKey/TDirectory objects and null value for TUUID objects inside TFile. As drawback, TRef objects stored in such file cannot be read correctly.

In case the name of the file is not reproducible either (in case of creating temporary filenames) a value can be passed to the reproducible option to replace the name stored in the file.

TFile *f = TFile::Open("tmpname.root?reproducible=fixedname","RECREATE","File title");

Definition at line 339 of file TFile.cxx.

◆ ~TFile()

TFile::~TFile ( )
override

File destructor.

Definition at line 563 of file TFile.cxx.

Member Function Documentation

◆ AsyncOpen()

TFileOpenHandle * TFile::AsyncOpen ( const char *  url,
Option_t option = "",
const char *  ftitle = "",
Int_t  compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault,
Int_t  netopt = 0 
)
static

Submit an asynchronous open request.

See TFile::Open(const char *, ...) for an explanation of the arguments. A handler is returned which is to be passed to TFile::Open(TFileOpenHandle *) to get the real TFile instance once the file is open. This call never blocks and it is provided to allow parallel submission of file opening operations expected to take a long time. TFile::Open(TFileOpenHandle *) may block if the file is not yet ready. The sequence

TFile::Open(TFile::AsyncOpen(const char *, ...))

is equivalent to

TFile::Open(const char *, ...)

To be effective, the underlying TFile implementation must be able to support asynchronous open functionality. Currently, only TNetXNGFile supports it. If the functionality is not implemented, this call acts transparently by returning an handle with the arguments for the standard synchronous open run by TFile::Open(TFileOpenHandle *). The retuned handle will be adopted by TFile after opening completion in TFile::Open(TFileOpenHandle *); if opening is not finalized the handle must be deleted by the caller.

Definition at line 4351 of file TFile.cxx.

◆ Class()

static TClass * TFile::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TFile::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TFile::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 344 of file TFile.h.

◆ Close()

void TFile::Close ( Option_t option = "")
overridevirtual

Close a file.

Parameters
[in]optionIf option == "R", all TProcessIDs referenced by this file are deleted.

Calling TFile::Close("R") might be necessary in case one reads a long list of files having TRef, writing some of the referenced objects or TRef to a new file. If the TRef or referenced objects of the file being closed will not be referenced again, it is possible to minimize the size of the TProcessID data structures in memory by forcing a delete of the unused TProcessID.

Reimplemented from TDirectoryFile.

Reimplemented in TSQLFile, TXMLFile, TNetFile, TParallelMergingFile, and TWebFile.

Definition at line 950 of file TFile.cxx.

◆ Copy()

void TFile::Copy ( TObject object) const
inlineoverridevirtual

Copy this to obj.

Reimplemented from TDirectoryFile.

Definition at line 209 of file TFile.h.

◆ Cp() [1/2]

Bool_t TFile::Cp ( const char *  dst,
Bool_t  progressbar = kTRUE,
UInt_t  buffersize = 1000000 
)
virtual

Allows to copy this file to the dst URL.

Returns kTRUE in case of success, kFALSE otherwise.

Definition at line 5003 of file TFile.cxx.

◆ Cp() [2/2]

Bool_t TFile::Cp ( const char *  src,
const char *  dst,
Bool_t  progressbar = kTRUE,
UInt_t  buffersize = 1000000 
)
static

Allows to copy file from src to dst URL.

Returns kTRUE in case of success, kFALSE otherwise.

Definition at line 5134 of file TFile.cxx.

◆ CpProgress()

void TFile::CpProgress ( Long64_t  bytesread,
Long64_t  size,
TStopwatch watch 
)
staticprivate

Print file copy progress.

Definition at line 4975 of file TFile.cxx.

◆ CreateKey() [1/2]

TKey * TFile::CreateKey ( TDirectory mother,
const TObject obj,
const char *  name,
Int_t  bufsize 
)
virtual

Creates key for object and converts data to buffer.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1047 of file TFile.cxx.

◆ CreateKey() [2/2]

TKey * TFile::CreateKey ( TDirectory mother,
const void *  obj,
const TClass cl,
const char *  name,
Int_t  bufsize 
)
virtual

Creates key for object and converts data to buffer.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1055 of file TFile.cxx.

◆ CurrentFile()

TFile *& TFile::CurrentFile ( )
static

Return the current ROOT file if any.

Note that if 'cd' has been called on a TDirectory that does not belong to a file, gFile will be unchanged and still points to the file of the previous current directory that was a file.

Definition at line 1067 of file TFile.cxx.

◆ DeclFileName()

static const char * TFile::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 344 of file TFile.h.

◆ Delete()

void TFile::Delete ( const char *  namecycle = "")
overridevirtual

Delete object namecycle.

Parameters
[in]namecycleEncodes the name and cycle of the objects to delete

Namecycle identifies an object in the top directory of the file namecycle has the format name;cycle.

  • name = * means all objects
  • cycle = * means all cycles (memory and keys)
  • cycle = "" or cycle = 9999 ==> apply to a memory object When name=* use T* to delete subdirectories also

Examples:

name/cycle Action
foo delete object named foo in memory
foo;1 delete cycle 1 of foo on file
foo;* delete all cycles of foo on disk and also from memory
*;2 delete all objects on file having the cycle 2
*;* delete all objects from memory and file
T*;* delete all objects from memory and file and all subdirectories

Reimplemented from TDirectoryFile.

Definition at line 1098 of file TFile.cxx.

◆ DirCreateEntry()

virtual Long64_t TFile::DirCreateEntry ( TDirectory )
inlineprotectedvirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 167 of file TFile.h.

◆ DirReadKeys()

virtual Int_t TFile::DirReadKeys ( TDirectory )
inlineprotectedvirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 168 of file TFile.h.

◆ DirWriteHeader()

virtual void TFile::DirWriteHeader ( TDirectory )
inlineprotectedvirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 170 of file TFile.h.

◆ DirWriteKeys()

virtual void TFile::DirWriteKeys ( TDirectory )
inlineprotectedvirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 169 of file TFile.h.

◆ Draw()

void TFile::Draw ( Option_t option = "")
overridevirtual

Fill Graphics Structure and Paint.

Loop on all objects (memory or file) and all subdirectories.

Reimplemented from TDirectory.

Definition at line 1111 of file TFile.cxx.

◆ DrawMap()

void TFile::DrawMap ( const char *  keys = "*",
Option_t option = "" 
)
virtual

Draw map of objects in this file.

The map drawing is handled by TFileDrawMap. Once the map is drawn, turn on the TCanvas option "View->Event Statusbar". Then, when moving the mouse in the canvas, the "Event Status" panels shows the object corresponding to the mouse position.

Example:

auto f = new TFile("myfile.root");
f->DrawMap();
TFile()
File default Constructor.
Definition TFile.cxx:201

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1128 of file TFile.cxx.

◆ FillBuffer()

void TFile::FillBuffer ( char *&  buffer)
overridevirtual

Encode file output buffer.

The file output buffer contains only the FREE data record.

Reimplemented from TDirectoryFile.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1170 of file TFile.cxx.

◆ Flush()

void TFile::Flush ( )
virtual

Synchronize a file's in-memory and on-disk states.

Reimplemented in TSQLFile, TXMLFile, TNetFile, and TNetXNGFile.

Definition at line 1141 of file TFile.cxx.

◆ FlushWriteCache()

Bool_t TFile::FlushWriteCache ( )
protected

Flush the write cache if active.

Return kTRUE in case of error

Definition at line 1158 of file TFile.cxx.

◆ GetArchive()

TArchiveFile * TFile::GetArchive ( ) const
inline

Definition at line 220 of file TFile.h.

◆ GetArchiveOffset()

Long64_t TFile::GetArchiveOffset ( ) const
inline

Definition at line 221 of file TFile.h.

◆ GetAsyncOpenStatus() [1/3]

virtual EAsyncOpenStatus TFile::GetAsyncOpenStatus ( )
inlineprotectedvirtual

Definition at line 137 of file TFile.h.

◆ GetAsyncOpenStatus() [2/3]

TFile::EAsyncOpenStatus TFile::GetAsyncOpenStatus ( const char *  name)
static

Get status of the async open request related to 'name'.

Definition at line 4899 of file TFile.cxx.

◆ GetAsyncOpenStatus() [3/3]

TFile::EAsyncOpenStatus TFile::GetAsyncOpenStatus ( TFileOpenHandle handle)
static

Get status of the async open request related to 'handle'.

Definition at line 4928 of file TFile.cxx.

◆ GetBestBuffer()

Int_t TFile::GetBestBuffer ( ) const

Return the best buffer size of objects on this file.

The best buffer size is estimated based on the current mean value and standard deviation of all objects written so far to this file. Returns mean value + one standard deviation.

Definition at line 1183 of file TFile.cxx.

◆ GetBytesRead()

virtual Long64_t TFile::GetBytesRead ( ) const
inlinevirtual

Definition at line 241 of file TFile.h.

◆ GetBytesReadExtra()

virtual Long64_t TFile::GetBytesReadExtra ( ) const
inlinevirtual

Definition at line 242 of file TFile.h.

◆ GetBytesToPrefetch()

Int_t TFile::GetBytesToPrefetch ( ) const
virtual

Max number of bytes to prefetch.

By default this is 75% of the read cache size. But specific TFile implementations may need to change it

Definition at line 5222 of file TFile.cxx.

◆ GetBytesWritten()

Long64_t TFile::GetBytesWritten ( ) const
virtual

Return the total number of bytes written so far to the file.

Definition at line 4566 of file TFile.cxx.

◆ GetCacheFileDir()

const char * TFile::GetCacheFileDir ( )
static

Get the directory where to locally stage/cache remote files.

Definition at line 4654 of file TFile.cxx.

◆ GetCacheRead()

TFileCacheRead * TFile::GetCacheRead ( const TObject tree = nullptr) const

Return a pointer to the current read cache.

Definition at line 1262 of file TFile.cxx.

◆ GetCacheWrite()

TFileCacheWrite * TFile::GetCacheWrite ( ) const

Return a pointer to the current write cache.

Definition at line 1279 of file TFile.cxx.

◆ GetClassIndex()

TArrayC * TFile::GetClassIndex ( ) const
inline

Definition at line 226 of file TFile.h.

◆ GetCompressionAlgorithm()

Int_t TFile::GetCompressionAlgorithm ( ) const
inline

Definition at line 385 of file TFile.h.

◆ GetCompressionFactor()

Float_t TFile::GetCompressionFactor ( )

Return the file compression factor.

Add total number of compressed/uncompressed bytes for each key. Returns the ratio of the two.

Definition at line 1202 of file TFile.cxx.

◆ GetCompressionLevel()

Int_t TFile::GetCompressionLevel ( ) const
inline

Definition at line 391 of file TFile.h.

◆ GetCompressionSettings()

Int_t TFile::GetCompressionSettings ( ) const
inline

Definition at line 397 of file TFile.h.

◆ GetEND()

virtual Long64_t TFile::GetEND ( ) const
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 231 of file TFile.h.

◆ GetEndpointUrl() [1/2]

virtual const TUrl * TFile::GetEndpointUrl ( ) const
inlinevirtual

Reimplemented in TNetFile.

Definition at line 235 of file TFile.h.

◆ GetEndpointUrl() [2/2]

const TUrl * TFile::GetEndpointUrl ( const char *  name)
static

Get final URL for file being opened asynchronously.

Returns 0 is the information is not yet available.

Definition at line 4945 of file TFile.cxx.

◆ GetErrno()

Int_t TFile::GetErrno ( ) const
virtual

Method returning errno.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1246 of file TFile.cxx.

◆ GetFd()

Int_t TFile::GetFd ( ) const
inline

Definition at line 234 of file TFile.h.

◆ GetFileBytesRead()

Long64_t TFile::GetFileBytesRead ( )
static

Static function returning the total number of bytes read from all files.

Definition at line 4574 of file TFile.cxx.

◆ GetFileBytesWritten()

Long64_t TFile::GetFileBytesWritten ( )
static

Static function returning the total number of bytes written to all files.

Does not take into account what might still be in the write caches.

Definition at line 4583 of file TFile.cxx.

◆ GetFileCounter()

Long64_t TFile::GetFileCounter ( )
static

Definition at line 4617 of file TFile.cxx.

◆ GetFileReadCalls()

Int_t TFile::GetFileReadCalls ( )
static

Static function returning the total number of read calls from all files.

Definition at line 4591 of file TFile.cxx.

◆ GetListOfFree()

TList * TFile::GetListOfFree ( ) const
inline

Definition at line 237 of file TFile.h.

◆ GetListOfProcessIDs()

TObjArray * TFile::GetListOfProcessIDs ( ) const
inline

Definition at line 236 of file TFile.h.

◆ GetNbytesFree()

virtual Int_t TFile::GetNbytesFree ( ) const
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 249 of file TFile.h.

◆ GetNbytesInfo()

virtual Int_t TFile::GetNbytesInfo ( ) const
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 248 of file TFile.h.

◆ GetNewUrl()

virtual TString TFile::GetNewUrl ( )
inlinevirtual

Reimplemented in TDavixFile, and TNetXNGFile.

Definition at line 250 of file TFile.h.

◆ GetNfree()

virtual Int_t TFile::GetNfree ( ) const
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 238 of file TFile.h.

◆ GetNProcessIDs()

virtual Int_t TFile::GetNProcessIDs ( ) const
inlinevirtual

Definition at line 239 of file TFile.h.

◆ GetOnlyStaged()

Bool_t TFile::GetOnlyStaged ( )
static

Returns staged only flag.

Definition at line 4754 of file TFile.cxx.

◆ GetOpenTimeout()

UInt_t TFile::GetOpenTimeout ( )
static

Returns open timeout (in ms).

Definition at line 4734 of file TFile.cxx.

◆ GetOption()

Option_t * TFile::GetOption ( ) const
inlineoverridevirtual

Reimplemented from TObject.

Definition at line 240 of file TFile.h.

◆ GetReadaheadSize()

Int_t TFile::GetReadaheadSize ( )
static

Static function returning the readahead buffer size.

Definition at line 4599 of file TFile.cxx.

◆ GetReadCalls()

virtual Int_t TFile::GetReadCalls ( ) const
inlinevirtual

Definition at line 244 of file TFile.h.

◆ GetReadStreamerInfo()

Bool_t TFile::GetReadStreamerInfo ( )
static

If the streamerinfos are to be read at file opening.

See TFile::SetReadStreamerInfo for more documentation.

Definition at line 3742 of file TFile.cxx.

◆ GetRecordHeader()

Int_t TFile::GetRecordHeader ( char *  buf,
Long64_t  first,
Int_t  maxbytes,
Int_t nbytes,
Int_t objlen,
Int_t keylen 
)

Read the logical record header starting at a certain postion.

Parameters
[in]bufpointer to buffer
[in]firstread offset
[in]maxbytesBytes which are read into buf.
[out]nbytesNumber of bytes in record if negative, this is a deleted record if 0, cannot read record, wrong value of argument first
[out]objlenUncompressed object size
[out]keylenLength of logical record header

The function reads nread bytes where nread is the minimum of maxbytes and the number of bytes before the end of file. The function returns nread. Note that the arguments objlen and keylen are returned only if maxbytes >=16

Definition at line 1301 of file TFile.cxx.

◆ GetRelOffset()

Long64_t TFile::GetRelOffset ( ) const
inline

Definition at line 251 of file TFile.h.

◆ GetSeekFree()

virtual Long64_t TFile::GetSeekFree ( ) const
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 252 of file TFile.h.

◆ GetSeekInfo()

virtual Long64_t TFile::GetSeekInfo ( ) const
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 253 of file TFile.h.

◆ GetSize()

Long64_t TFile::GetSize ( ) const
virtual

Returns the current file size.

Returns -1 in case the file could not be stat'ed.

Reimplemented in TDavixFile, TSQLFile, TXMLFile, TMemFile, TWebFile, and TNetXNGFile.

Definition at line 1347 of file TFile.cxx.

◆ GetStreamerInfoCache()

const TList * TFile::GetStreamerInfoCache ( )

Returns the cached list of StreamerInfos used in this file.

Definition at line 1366 of file TFile.cxx.

◆ GetStreamerInfoList()

TList * TFile::GetStreamerInfoList ( )
finalvirtual

Read the list of TStreamerInfo objects written to this file.

The function returns a TList. It is the user's responsibility to delete the list created by this function.

Note the list, in addition to TStreamerInfo object, contains sometimes a TList named 'listOfRules' and containing the schema evolution rules related to the file's content.

Using the list, one can access additional information, e.g.:

TFile f("myfile.root");
auto list = f.GetStreamerInfoList();
auto info = dynamic_cast<TStreamerInfo*>(list->FindObject("MyClass"));
if (info) auto classversionid = info->GetClassVersion();
delete list;
Describes a persistent version of a class.
Int_t GetClassVersion() const override

Definition at line 1445 of file TFile.cxx.

◆ GetStreamerInfoListImpl()

TFile::InfoListRet TFile::GetStreamerInfoListImpl ( bool  lookupSICache)
protectedvirtual

See documentation of GetStreamerInfoList for more details.

This is an internal method which returns the list of streamer infos and also information about the success of the operation.

Reimplemented in TXMLFile, and TSQLFile.

Definition at line 1376 of file TFile.cxx.

◆ GetType()

TFile::EFileType TFile::GetType ( const char *  name,
Option_t option = "",
TString prefix = nullptr 
)
static

Resolve the file type as a function of the protocol field in 'name'.

If defined, the string 'prefix' is added when testing the locality of a 'name' with network-like structure (i.e. root://host//path); if the file is local, on return 'prefix' will contain the actual local path of the file.

Definition at line 4821 of file TFile.cxx.

◆ GetVersion()

Int_t TFile::GetVersion ( ) const
inline

Definition at line 245 of file TFile.h.

◆ IncrementFileCounter()

void TFile::IncrementFileCounter ( )
static

Definition at line 4620 of file TFile.cxx.

◆ IncrementProcessIDs()

virtual void TFile::IncrementProcessIDs ( )
inlinevirtual

Definition at line 257 of file TFile.h.

◆ Init()

void TFile::Init ( Bool_t  create)
protectedvirtual

Initialize a TFile object.

Parameters
[in]createCreate a new file.

TFile implementations providing asynchronous open functionality need to override this method to run the appropriate checks before calling this standard initialization part. See TNetXNGFile::Init for an example.

Reimplemented in TNetFile, TNetXNGFile, TDavixFile, and TWebFile.

Definition at line 613 of file TFile.cxx.

◆ IsA()

TClass * TFile::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TDirectoryFile.

Reimplemented in TMemFile, TSQLFile, TXMLFile, TNetFile, TParallelMergingFile, TS3WebFile, TWebFile, and TNetXNGFile.

Definition at line 344 of file TFile.h.

◆ IsArchive()

virtual Bool_t TFile::IsArchive ( ) const
inlinevirtual

Definition at line 258 of file TFile.h.

◆ IsBinary()

Bool_t TFile::IsBinary ( ) const
inline

Definition at line 259 of file TFile.h.

◆ IsOpen()

Bool_t TFile::IsOpen ( ) const
virtual

Returns kTRUE in case file is open and kFALSE if file is not open.

Reimplemented in TSQLFile, TXMLFile, TNetFile, TWebFile, and TNetXNGFile.

Definition at line 1469 of file TFile.cxx.

◆ IsRaw()

Bool_t TFile::IsRaw ( ) const
inline

Definition at line 260 of file TFile.h.

◆ ls()

void TFile::ls ( Option_t option = "") const
overridevirtual

List file contents.

Indentation is used to identify the file tree. Subdirectories are listed first, then objects in memory, then objects on the file.

Reimplemented from TDirectoryFile.

Definition at line 1457 of file TFile.cxx.

◆ MakeFree()

void TFile::MakeFree ( Long64_t  first,
Long64_t  last 
)
virtual

Mark unused bytes on the file.

The list of free segments is in the fFree linked list. When an object is deleted from the file, the freed space is added into the FREE linked list (fFree). The FREE list consists of a chain of consecutive free segments on the file. At the same time, the first 4 bytes of the freed record on the file are overwritten by GAPSIZE where GAPSIZE = -(Number of bytes occupied by the record).

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1484 of file TFile.cxx.

◆ MakeProject()

void TFile::MakeProject ( const char *  dirname,
const char *  classes = "*",
Option_t option = "new" 
)
virtual

Generate source code necessary to access the objects stored in the file.

Generate code in directory dirname for all classes specified in argument classes If classes = "*" (default and currently the only supported value), the function generates an include file for each class in the StreamerInfo list for which a TClass object does not exist.

The code generated includes:

  • dirnameProjectHeaders.h, which contains one #include statement per generated header file
  • dirnameProjectSource.cxx,which contains all the constructors and destructors implementation. and one header per class that is not nested inside another class. The header file name is the fully qualified name of the class after all the special characters "<>,:" are replaced by underscored. For example for std::pair<edm::Vertex,int> the file name is pair_edm__Vertex_int_.h

In the generated classes, map, multimap when the first template parameter is a class are replaced by a vector of pair. set and multiset when the tempalte parameter is a class are replaced by a vector. This is required since we do not have the code needed to order and/or compare the object of the classes. This is a quick explanation of the options available:

Option Details
new (default) A new directory dirname is created. If dirname already exist, an error message is printed and the function returns.
recreate If dirname does not exist, it is created (like in "new"). If dirname already exist, all existing files in dirname are deleted before creating the new files.
update New classes are added to the existing directory. Existing classes with the same name are replaced by the new definition. If the directory dirname doest not exist, same effect as "new".
genreflex Use genreflex rather than rootcint to generate the dictionary.
par Create a PAR file with the minimal set of code needed to read the content of the ROOT file. The name of the PAR file is basename(dirname), with extension '.par' enforced; the PAR file will be created at dirname(dirname).

If, in addition to one of the 3 above options, the option "+" is specified, the function will generate:

  • a script called MAKEP to build the shared lib
  • a dirnameLinkDef.h file
  • rootcint will be run to generate a dirnameProjectDict.cxx file
  • dirnameProjectDict.cxx will be compiled with the current options in compiledata.h
  • a shared lib dirname.so will be created. If the option "++" is specified, the generated shared lib is dynamically linked with the current executable module. If the option "+" and "nocompile" are specified, the utility files are generated as in the option "+" but they are not executed. Example: file.MakeProject("demo","*","recreate++");
  • creates a new directory demo unless it already exist
  • clear the previous directory content
  • generate the xxx.h files for all classes xxx found in this file and not yet known to the CINT dictionary.
  • creates the build script MAKEP
  • creates a LinkDef.h file
  • runs rootcint generating demoProjectDict.cxx
  • compiles demoProjectDict.cxx into demoProjectDict.o
  • generates a shared lib demo.so
  • dynamically links the shared lib demo.so to the executable If only the option "+" had been specified, one can still link the shared lib to the current executable module with:
    gSystem->load("demo/demo.so");
    
    The following feature is not yet enabled: One can restrict the list of classes to be generated by using expressions like:
    classes = "Ali*" generate code only for classes starting with Ali
    classes = "myClass" generate code for class MyClass only.
    

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 2726 of file TFile.cxx.

◆ MakeProjectParMake()

Int_t TFile::MakeProjectParMake ( const char *  pack,
const char *  filemake 
)
protected

Create makefile at 'filemake' for PAR package 'pack'.

Called by MakeProject when option 'par' is given. Return 0 on success, -1 on error.

Definition at line 3364 of file TFile.cxx.

◆ MakeProjectParProofInf()

Int_t TFile::MakeProjectParProofInf ( const char *  pack,
const char *  proofinf 
)
protected

Create BUILD.sh and SETUP.C under 'proofinf' for PAR package 'pack'.

Called by MakeProject when option 'par' is given. Return 0 on success, -1 on error.

Definition at line 3486 of file TFile.cxx.

◆ Map() [1/2]

virtual void TFile::Map ( )
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 267 of file TFile.h.

◆ Map() [2/2]

void TFile::Map ( Option_t opt)
virtual

List the contents of a file sequentially.

For each logical record found, it prints:

Date/Time  Record_Adress Logical_Record_Length  ClassName  CompressionFactor

Example of output

20010404/150437  At:64        N=150       TFile
20010404/150440  At:214       N=28326     TBasket        CX =  1.13
20010404/150440  At:28540     N=29616     TBasket        CX =  1.08
20010404/150440  At:58156     N=29640     TBasket        CX =  1.08
20010404/150440  At:87796     N=29076     TBasket        CX =  1.10
20010404/150440  At:116872    N=10151     TBasket        CX =  3.15
20010404/150441  At:127023    N=28341     TBasket        CX =  1.13
20010404/150441  At:155364    N=29594     TBasket        CX =  1.08
20010404/150441  At:184958    N=29616     TBasket        CX =  1.08
20010404/150441  At:214574    N=29075     TBasket        CX =  1.10
20010404/150441  At:243649    N=9583      TBasket        CX =  3.34
20010404/150442  At:253232    N=28324     TBasket        CX =  1.13
20010404/150442  At:281556    N=29641     TBasket        CX =  1.08
20010404/150442  At:311197    N=29633     TBasket        CX =  1.08
20010404/150442  At:340830    N=29091     TBasket        CX =  1.10
20010404/150442  At:369921    N=10341     TBasket        CX =  3.09
20010404/150442  At:380262    N=509       TH1F           CX =  1.93
20010404/150442  At:380771    N=1769      TH2F           CX =  4.32
20010404/150442  At:382540    N=1849      TProfile       CX =  1.65
20010404/150442  At:384389    N=18434     TNtuple        CX =  4.51
20010404/150442  At:402823    N=307       KeysList
20010404/150443  At:403130    N=4548      StreamerInfo   CX =  3.65
20010404/150443  At:407678    N=86        FreeSegments
20010404/150443  At:407764    N=1         END

If the parameter opt contains "forComp", the Date/Time is omitted and the decompressed size is also printed.

Record_Adress Logical_Record_Length Key_Length Object_Record_Length ClassName CompressionFactor

If the parameter opt contains "extended", the name and title of the keys are added: 20200820/155031 At:100 N=180 TFile name: hsimple.root title: Demo ROOT file with histograms 220200820/155032 At:280 N=28880 TBasket CX = 1.11 name: random title: ntuple 220200820/155032 At:29160 N=29761 TBasket CX = 1.08 name: px title: ntuple 220200820/155032 At:58921 N=29725 TBasket CX = 1.08 name: py title: ntuple 220200820/155032 At:88646 N=29209 TBasket CX = 1.10 name: pz title: ntuple 220200820/155032 At:117855 N=10197 TBasket CX = 3.14 name: i title: ntuple ... 20200820/155032 At:405110 N=808 TNtuple CX = 3.53 name: ntuple title: Demo ntuple 20200820/155706 At:405918 N=307 KeysList name: hsimple.root title: Demo ROOT file with histograms 20200820/155032 At:406225 N=8556 StreamerInfo CX = 3.42 name: StreamerInfo title: Doubly linked list 20200820/155708 At:414781 N=86 FreeSegments name: hsimple.root title: Demo ROOT file with histograms 20200820/155708 At:414867 N=1 END

Note: The combined size of the classname, name and title is truncated to 476 characters (a little more for regular keys of small files)

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1567 of file TFile.cxx.

◆ Matches()

Bool_t TFile::Matches ( const char *  url)
virtual

Return kTRUE if 'url' matches the coordinates of this file.

The check is implementation dependent and may need to be overload by each TFile implementation relying on this check. The default implementation checks the file name only.

Reimplemented in TNetFile.

Definition at line 4766 of file TFile.cxx.

◆ MustFlush()

virtual Bool_t TFile::MustFlush ( ) const
inlinevirtual

Definition at line 269 of file TFile.h.

◆ Open() [1/2]

TFile * TFile::Open ( const char *  url,
Option_t options = "",
const char *  ftitle = "",
Int_t  compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault,
Int_t  netopt = 0 
)
static

Create / open a file.

The type of the file can be either a TFile, TNetFile, TWebFile or any TFile derived class for which an plugin library handler has been registered with the plugin manager (for the plugin manager see the TPluginManager class). The returned type of TFile depends on the file name specified by 'url'. If 'url' is a '|'-separated list of file URLs, the 'URLs' are tried sequentially in the specified order until a successful open. If the file starts with "root:", "roots:" or "rootk:" a TNetFile object will be returned, with "http:" a TWebFile, with "file:" a local TFile, etc. (see the list of TFile plugin handlers in $ROOTSYS/etc/system.rootrc for regular expressions that will be checked) and as last a local file will be tried. Before opening a file via TNetFile a check is made to see if the URL specifies a local file. If that is the case the file will be opened via a normal TFile. To force the opening of a local file via a TNetFile use either TNetFile directly or specify as host "localhost". The netopt argument is only used by TNetFile. For the meaning of the options and other arguments see the constructors of the individual file classes. In case of error, it returns a nullptr.

For TFile implementations supporting asynchronous file open, see TFile::AsyncOpen(...), it is possible to request a timeout with the option TIMEOUT=<secs>: the timeout must be specified in seconds and it will be internally checked with granularity of one millisec. For remote files there is the option: CACHEREAD opens an existing file for reading through the file cache. The file will be downloaded to the cache and opened from there. If the download fails, it will be opened remotely. The file will be downloaded to the directory specified by SetCacheFileDir().

The caller is responsible for deleting the pointer. In READ mode, a nullptr is returned if the file does not exist or cannot be opened. In CREATE mode, a nullptr is returned if the file already exists or cannot be created. In RECREATE mode, a nullptr is returned if the file can not be created. In UPDATE mode, a nullptr is returned if the file cannot be created or opened.

Definition at line 4089 of file TFile.cxx.

◆ Open() [2/2]

TFile * TFile::Open ( TFileOpenHandle fh)
static

Waits for the completion of an asynchronous open request.

Returns the pointer to the associated TFile, transferring ownership of the handle to the TFile instance.

Definition at line 4447 of file TFile.cxx.

◆ OpenFromCache()

TFile * TFile::OpenFromCache ( const char *  name,
Option_t = "",
const char *  ftitle = "",
Int_t  compress = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault,
Int_t  netopt = 0 
)
staticprivate

Open a file for reading through the file cache.

The file will be downloaded to the cache and opened from there. If the download fails, it will be opened remotely. The file will be downloaded to the directory specified by SetCacheFileDir().

Definition at line 3874 of file TFile.cxx.

◆ operator=()

void TFile::operator= ( const TFile )
privatedelete

◆ Paint()

void TFile::Paint ( Option_t option = "")
overridevirtual

Paint all objects in the file.

Reimplemented from TDirectory.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1698 of file TFile.cxx.

◆ Print()

void TFile::Print ( Option_t option = "") const
overridevirtual

Print all objects in the file.

Reimplemented from TDirectory.

Reimplemented in TSQLFile, TXMLFile, TNetFile, and TMemFile.

Definition at line 1706 of file TFile.cxx.

◆ ReadBuffer() [1/2]

Bool_t TFile::ReadBuffer ( char *  buf,
Int_t  len 
)
virtual

Read a buffer from the file.

This is the basic low level read operation. Returns kTRUE in case of failure.

Reimplemented in TSQLFile, TXMLFile, TDavixFile, TDCacheFile, TNetFile, TWebFile, and TNetXNGFile.

Definition at line 1770 of file TFile.cxx.

◆ ReadBuffer() [2/2]

Bool_t TFile::ReadBuffer ( char *  buf,
Long64_t  pos,
Int_t  len 
)
virtual

Read a buffer from the file at the offset 'pos' in the file.

Returns kTRUE in case of failure. Compared to ReadBuffer(char*, Int_t), this routine does not change the cursor on the physical file representation (fD) if the data is in this TFile's cache.

Reimplemented in TSQLFile, TXMLFile, TDavixFile, TDCacheFile, TNetFile, TWebFile, and TNetXNGFile.

Definition at line 1720 of file TFile.cxx.

◆ ReadBufferAsync()

Bool_t TFile::ReadBufferAsync ( Long64_t  offs,
Int_t  len 
)
virtual

Reimplemented in TDavixFile.

Definition at line 5208 of file TFile.cxx.

◆ ReadBuffers()

Bool_t TFile::ReadBuffers ( char *  buf,
Long64_t pos,
Int_t len,
Int_t  nbuf 
)
virtual

Read the nbuf blocks described in arrays pos and len.

The value pos[i] is the seek position of block i of length len[i]. Note that for nbuf=1, this call is equivalent to TFile::ReafBuffer. This function is overloaded by TNetFile, TWebFile, etc. Returns kTRUE in case of failure.

Reimplemented in TDavixFile, TDCacheFile, TNetFile, TS3WebFile, TWebFile, and TNetXNGFile.

Definition at line 1821 of file TFile.cxx.

◆ ReadBufferViaCache()

Int_t TFile::ReadBufferViaCache ( char *  buf,
Int_t  len 
)
protected

Read buffer via cache.

Returns 0 if the requested block is not in the cache, 1 in case read via cache was successful, 2 in case read via cache failed.

Definition at line 1889 of file TFile.cxx.

◆ ReadFree()

void TFile::ReadFree ( )
virtual

Read the FREE linked list.

Every file has a linked list (fFree) of free segments. This linked list has been written on the file via WriteFree as a single data record.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 1925 of file TFile.cxx.

◆ ReadProcessID()

TProcessID * TFile::ReadProcessID ( UShort_t  pidf)
virtual

The TProcessID with number pidf is read from this file.

If the object is not already entered in the gROOT list, it is added.

Definition at line 1951 of file TFile.cxx.

◆ ReadStreamerInfo()

void TFile::ReadStreamerInfo ( )
virtual

Read the list of StreamerInfo from this file.

The key with name holding the list of TStreamerInfo objects is read. The corresponding TClass objects are updated. Note that this function is not called if the static member fgReadInfo is false. (see TFile::SetReadStreamerInfo)

Definition at line 3605 of file TFile.cxx.

◆ Recover()

Int_t TFile::Recover ( )
virtual

Attempt to recover file if not correctly closed.

The function returns the number of keys that have been recovered. If no keys can be recovered, the file will be declared Zombie by the calling function. This function is automatically called when opening a file. If the file is open in read only mode, the file is not modified. If open in update mode and the function finds something to recover, a new directory header is written to the file. When opening the file gain no message from Recover will be reported. If keys have been recovered, the file is usable and you can safely read the corresponding objects. If the file is not usable (a zombie), you can test for this case with code like:

TFile f("myfile.root");
if (f.IsZombie()) {<actions to take if file is unusable>}

If the file has been recovered, the bit kRecovered is set in the TFile object in memory. You can test if the file has been recovered with

if (f.TestBit(TFile::kRecovered)) {... the file has been recovered}

When writing TTrees to a file, it is important to save the Tree header at regular intervals (see TTree::AutoSave). If a file containing a Tree is recovered, the last Tree header written to the file will be used. In this case all the entries in all the branches written before writing the header are valid entries. One can disable the automatic recovery procedure by setting

TFile.Recover 0

in the system.rootrc file.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 2048 of file TFile.cxx.

◆ ReOpen()

Int_t TFile::ReOpen ( Option_t mode)
virtual

Reopen a file with a different access mode.

For example, it is possible to change from READ to UPDATE or from NEW, CREATE, RECREATE, UPDATE to READ. Thus the mode argument can be either "READ" or "UPDATE". The method returns 0 in case the mode was successfully modified, 1 in case the mode did not change (was already as requested or wrong input arguments) and -1 in case of failure, in which case the file cannot be used anymore. The current directory (gFile) is changed to this file.

Reimplemented in TSQLFile, TXMLFile, TNetFile, TWebFile, and TNetXNGFile.

Definition at line 2162 of file TFile.cxx.

◆ ResetErrno()

void TFile::ResetErrno ( ) const
virtual

Method resetting the errno.

Reimplemented in TSQLFile, TXMLFile, TDCacheFile, and TMemFile.

Definition at line 1254 of file TFile.cxx.

◆ Seek()

void TFile::Seek ( Long64_t  offset,
ERelativeTo  pos = kBeg 
)
virtual

Seek to a specific position in the file. Pos it either kBeg, kCur or kEnd.

Reimplemented in TDavixFile, TNetFile, TWebFile, TNetXNGFile, TSQLFile, and TXMLFile.

Definition at line 2274 of file TFile.cxx.

◆ SetCacheFileDir()

Bool_t TFile::SetCacheFileDir ( std::string_view  cachedir,
Bool_t  operatedisconnected = kTRUE,
Bool_t  forcecacheread = kFALSE 
)
static

Sets the directory where to locally stage/cache remote files.

If the directory is not writable by us return kFALSE.

Definition at line 4626 of file TFile.cxx.

◆ SetCacheRead()

void TFile::SetCacheRead ( TFileCacheRead cache,
TObject tree = nullptr,
ECacheAction  action = kDisconnect 
)
virtual

Set a pointer to the read cache.

This relinquishes ownership of the previous cache, so if you do not already have a pointer to the previous cache (and there was a previous cache), you ought to retrieve (and delete it if needed) using:

TFileCacheRead *older = myfile->GetCacheRead();

The action specifies how to behave when detaching a cache from the the TFile. If set to (default) kDisconnect, the contents of the cache will be flushed when it is removed from the file, and it will disconnect the cache object from the file. In almost all cases, this is what you want. If you want to disconnect the cache temporarily from this tree and re-attach later to the same fil, you can set action to kDoNotDisconnect. This will allow things like prefetching to continue in the background while it is no longer the default cache for the TTree. Except for a few expert use cases, kDisconnect is likely the correct setting.

WARNING: if action=kDoNotDisconnect, you MUST delete the cache before TFile.

Definition at line 2365 of file TFile.cxx.

◆ SetCacheWrite()

void TFile::SetCacheWrite ( TFileCacheWrite cache)
virtual

Set a pointer to the write cache.

If file is null the existing write cache is deleted.

Definition at line 2388 of file TFile.cxx.

◆ SetCompressionAlgorithm()

void TFile::SetCompressionAlgorithm ( Int_t  algorithm = ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
virtual

See comments for function SetCompressionSettings.

Definition at line 2305 of file TFile.cxx.

◆ SetCompressionLevel()

void TFile::SetCompressionLevel ( Int_t  level = ROOT::RCompressionSetting::ELevel::kUseMin)
virtual

See comments for function SetCompressionSettings.

Definition at line 2319 of file TFile.cxx.

◆ SetCompressionSettings()

void TFile::SetCompressionSettings ( Int_t  settings = ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
virtual

Used to specify the compression level and algorithm.

See the TFile constructor for the details.

Definition at line 2338 of file TFile.cxx.

◆ SetEND()

virtual void TFile::SetEND ( Long64_t  last)
inlinevirtual

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 287 of file TFile.h.

◆ SetFileBytesRead()

void TFile::SetFileBytesRead ( Long64_t  bytes = 0)
static

Definition at line 4608 of file TFile.cxx.

◆ SetFileBytesWritten()

void TFile::SetFileBytesWritten ( Long64_t  bytes = 0)
static

Definition at line 4611 of file TFile.cxx.

◆ SetFileReadCalls()

void TFile::SetFileReadCalls ( Int_t  readcalls = 0)
static

Definition at line 4614 of file TFile.cxx.

◆ SetOffset()

void TFile::SetOffset ( Long64_t  offset,
ERelativeTo  pos = kBeg 
)
virtual

Set position from where to start reading.

Definition at line 2253 of file TFile.cxx.

◆ SetOnlyStaged()

Bool_t TFile::SetOnlyStaged ( Bool_t  onlystaged)
static

Sets only staged flag.

Returns previous value of flag. When true we check before opening the file if it is staged, if not, the open fails.

Definition at line 4744 of file TFile.cxx.

◆ SetOpenTimeout()

UInt_t TFile::SetOpenTimeout ( UInt_t  timeout)
static

Sets open timeout time (in ms). Returns previous timeout value.

Definition at line 4724 of file TFile.cxx.

◆ SetOption()

virtual void TFile::SetOption ( Option_t option = ">")
inlinevirtual

Definition at line 289 of file TFile.h.

◆ SetReadaheadSize()

void TFile::SetReadaheadSize ( Int_t  bufsize = 256000)
static

Definition at line 4605 of file TFile.cxx.

◆ SetReadCalls()

virtual void TFile::SetReadCalls ( Int_t  readcalls = 0)
inlinevirtual

Definition at line 290 of file TFile.h.

◆ SetReadStreamerInfo()

void TFile::SetReadStreamerInfo ( Bool_t  readinfo = kTRUE)
static

Specify if the streamerinfos must be read at file opening.

If fgReadInfo is true (default) TFile::ReadStreamerInfo is called when opening the file. It may be interesting to set fgReadInfo to false to speedup the file opening time or in case libraries containing classes referenced by the file have not yet been loaded. if fgReadInfo is false, one can still read the StreamerInfo with myfile.ReadStreamerInfo();

Definition at line 3732 of file TFile.cxx.

◆ ShowStreamerInfo()

void TFile::ShowStreamerInfo ( )
virtual

Show the StreamerInfo of all classes written to this file.

Definition at line 3750 of file TFile.cxx.

◆ ShrinkCacheFileDir()

Bool_t TFile::ShrinkCacheFileDir ( Long64_t  shrinksize,
Long_t  cleanupinterval = 0 
)
static

Try to shrink the cache to the desired size.

With the clenupinterval you can specify the minimum amount of time after the previous cleanup before the cleanup operation is repeated in the cache directory

Definition at line 4666 of file TFile.cxx.

◆ Sizeof()

Int_t TFile::Sizeof ( ) const
overridevirtual

Return the size in bytes of the file header.

Reimplemented from TDirectoryFile.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 2397 of file TFile.cxx.

◆ Streamer()

void TFile::Streamer ( TBuffer b)
overridevirtual

Stream a TFile object.

Reimplemented from TDirectoryFile.

Reimplemented in TMemFile, TSQLFile, TXMLFile, TNetFile, TParallelMergingFile, TS3WebFile, TWebFile, and TNetXNGFile.

Definition at line 2405 of file TFile.cxx.

◆ StreamerNVirtual()

void TFile::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 344 of file TFile.h.

◆ SumBuffer()

void TFile::SumBuffer ( Int_t  bufsize)

Increment statistics for buffer sizes of objects in this file.

Definition at line 2417 of file TFile.cxx.

◆ SysClose()

Int_t TFile::SysClose ( Int_t  fd)
protectedvirtual

Interface to system close. All arguments like in POSIX close().

Reimplemented in TDCacheFile, TMemFile, TNetFile, TSQLFile, and TXMLFile.

Definition at line 4497 of file TFile.cxx.

◆ SysOpen()

Int_t TFile::SysOpen ( const char *  pathname,
Int_t  flags,
UInt_t  mode 
)
protectedvirtual

Interface to system open. All arguments like in POSIX open().

Reimplemented in TSQLFile, TXMLFile, TDCacheFile, TMemFile, and TNetFile.

Definition at line 4481 of file TFile.cxx.

◆ SysRead()

Int_t TFile::SysRead ( Int_t  fd,
void *  buf,
Int_t  len 
)
protectedvirtual

Interface to system read. All arguments like in POSIX read().

Reimplemented in TDCacheFile, TMemFile, TSQLFile, and TXMLFile.

Definition at line 4506 of file TFile.cxx.

◆ SysSeek()

Long64_t TFile::SysSeek ( Int_t  fd,
Long64_t  offset,
Int_t  whence 
)
protectedvirtual

Interface to system lseek.

All arguments like in POSIX lseek() except that the offset and return value are of a type which are able to handle 64 bit file systems.

Reimplemented in TDCacheFile, TMemFile, TSQLFile, and TXMLFile.

Definition at line 4525 of file TFile.cxx.

◆ SysStat()

Int_t TFile::SysStat ( Int_t  fd,
Long_t id,
Long64_t size,
Long_t flags,
Long_t modtime 
)
protectedvirtual

Return file stat information.

The interface and return value is identical to TSystem::GetPathInfo(). The function returns 0 in case of success and 1 if the file could not be stat'ed.

Reimplemented in TDCacheFile, TMemFile, TNetFile, TSQLFile, and TXMLFile.

Definition at line 4543 of file TFile.cxx.

◆ SysSync()

Int_t TFile::SysSync ( Int_t  fd)
protectedvirtual

Interface to system fsync. All arguments like in POSIX fsync().

Reimplemented in TDCacheFile, TMemFile, TSQLFile, and TXMLFile.

Definition at line 4552 of file TFile.cxx.

◆ SysWrite()

Int_t TFile::SysWrite ( Int_t  fd,
const void *  buf,
Int_t  len 
)
protectedvirtual

Interface to system write. All arguments like in POSIX write().

Reimplemented in TDCacheFile, TMemFile, TSQLFile, and TXMLFile.

Definition at line 4514 of file TFile.cxx.

◆ Write() [1/2]

Int_t TFile::Write ( const char *  name = nullptr,
Int_t  opt = 0,
Int_t  bufsiz = 0 
) const
overridevirtual

One can not save a const TDirectory object.

Reimplemented from TDirectoryFile.

Reimplemented in TSQLFile, TXMLFile, and TParallelMergingFile.

Definition at line 2466 of file TFile.cxx.

◆ Write() [2/2]

Int_t TFile::Write ( const char *  name = nullptr,
Int_t  opt = 0,
Int_t  bufsiz = 0 
)
overridevirtual

Write memory objects to this file.

Loop on all objects in memory (including subdirectories). A new key is created in the KEYS linked list for each object. The list of keys is then saved on the file (via WriteKeys) as a single data record. For values of opt see TObject::Write(). The directory header info is rewritten on the directory header record. The linked list of FREE segments is written. The file header is written (bytes 1->fBEGIN).

Reimplemented from TDirectoryFile.

Reimplemented in TSQLFile, TXMLFile, and TParallelMergingFile.

Definition at line 2436 of file TFile.cxx.

◆ WriteBuffer()

Bool_t TFile::WriteBuffer ( const char *  buf,
Int_t  len 
)
virtual

Write a buffer to the file.

This is the basic low level write operation. Returns kTRUE in case of failure.

Reimplemented in TSQLFile, TXMLFile, TDCacheFile, TNetFile, TDavixFile, and TNetXNGFile.

Definition at line 2476 of file TFile.cxx.

◆ WriteBufferViaCache()

Int_t TFile::WriteBufferViaCache ( const char *  buf,
Int_t  len 
)
protected

Write buffer via cache.

Returns 0 if cache is not active, 1 in case write via cache was successful, 2 in case write via cache failed.

Definition at line 2519 of file TFile.cxx.

◆ WriteFree()

void TFile::WriteFree ( )
virtual

Write FREE linked list on the file.

The linked list of FREE segments (fFree) is written as a single data record.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 2543 of file TFile.cxx.

◆ WriteHeader()

void TFile::WriteHeader ( )
virtual

Write File Header.

Reimplemented in TSQLFile, and TXMLFile.

Definition at line 2615 of file TFile.cxx.

◆ WriteProcessID()

UShort_t TFile::WriteProcessID ( TProcessID pid)
virtual

Check if the ProcessID pidd is already in the file, if not, add it and return the index number in the local file list.

Definition at line 3763 of file TFile.cxx.

◆ WriteStreamerInfo()

void TFile::WriteStreamerInfo ( )
virtual

Write the list of TStreamerInfo as a single object in this file The class Streamer description for all classes written to this file is saved.

See class TStreamerInfo.

Reimplemented in TSQLFile, TXMLFile, and TParallelMergingFile.

Definition at line 3792 of file TFile.cxx.

Friends And Related Symbol Documentation

◆ TBasket

friend class TBasket
friend

Definition at line 59 of file TFile.h.

◆ TDirectoryFile

friend class TDirectoryFile
friend

Definition at line 54 of file TFile.h.

◆ TFilePrefetch

friend class TFilePrefetch
friend

Definition at line 55 of file TFile.h.

Member Data Documentation

◆ fArchive

TArchiveFile* TFile::fArchive {nullptr}
protected

!Archive file from which we read this file

Definition at line 97 of file TFile.h.

◆ fArchiveOffset

Long64_t TFile::fArchiveOffset {0}
protected

!Offset at which file starts in archive

Definition at line 101 of file TFile.h.

◆ fAsyncHandle

TFileOpenHandle* TFile::fAsyncHandle {nullptr}
protected

!For proper automatic cleanup

Definition at line 108 of file TFile.h.

◆ fAsyncOpenStatus

EAsyncOpenStatus TFile::fAsyncOpenStatus {kAOSNotAsync}
protected

!Status of an asynchronous open request

Definition at line 109 of file TFile.h.

◆ fBEGIN

Long64_t TFile::fBEGIN {0}
protected

First used byte in file.

Definition at line 78 of file TFile.h.

◆ fBytesRead

Long64_t TFile::fBytesRead {0}
protected

Number of bytes read from this file.

Definition at line 76 of file TFile.h.

◆ fBytesReadExtra

Long64_t TFile::fBytesReadExtra {0}
protected

Number of extra bytes (overhead) read by the readahead buffer.

Definition at line 77 of file TFile.h.

◆ fBytesWrite

Long64_t TFile::fBytesWrite {0}
protected

Number of bytes written to this file.

Definition at line 75 of file TFile.h.

◆ fCacheRead

TFileCacheRead* TFile::fCacheRead {nullptr}
protected

!Pointer to the read cache (if any)

Definition at line 98 of file TFile.h.

◆ fCacheReadMap

TMap* TFile::fCacheReadMap {nullptr}
protected

!Pointer to the read cache (if any)

Definition at line 99 of file TFile.h.

◆ fCacheWrite

TFileCacheWrite* TFile::fCacheWrite {nullptr}
protected

!Pointer to the write cache (if any)

Definition at line 100 of file TFile.h.

◆ fClassIndex

TArrayC* TFile::fClassIndex {nullptr}
protected

!Index of TStreamerInfo classes written to this file

Definition at line 94 of file TFile.h.

◆ fCompress

Int_t TFile::fCompress {0}
protected

Compression level and algorithm.

Definition at line 84 of file TFile.h.

◆ fD

Int_t TFile::fD {-1}
protected

File descriptor.

Definition at line 82 of file TFile.h.

◆ fEND

Long64_t TFile::fEND {0}
protected

Last used byte in file.

Definition at line 79 of file TFile.h.

◆ fFree

TList* TFile::fFree {nullptr}
protected

Free segments linked list table.

Definition at line 93 of file TFile.h.

◆ fgAsyncOpenRequests

TList * TFile::fgAsyncOpenRequests = nullptr
staticprotected

Definition at line 122 of file TFile.h.

◆ fgBytesRead

std::atomic< Long64_t > TFile::fgBytesRead {0}
staticprotected

Number of bytes read by all TFile objects.

Definition at line 131 of file TFile.h.

◆ fgBytesWrite

std::atomic< Long64_t > TFile::fgBytesWrite {0}
staticprotected

Number of bytes written by all TFile objects.

Definition at line 130 of file TFile.h.

◆ fgCacheFileDir

TString TFile::fgCacheFileDir
staticprotected

Directory where to locally stage files.

Definition at line 124 of file TFile.h.

◆ fgCacheFileDisconnected

Bool_t TFile::fgCacheFileDisconnected = kTRUE
staticprotected

Indicates, we trust in the files in the cache dir without stat on the cached file.

Definition at line 125 of file TFile.h.

◆ fgCacheFileForce

Bool_t TFile::fgCacheFileForce = kFALSE
staticprotected

Indicates, to force all READ to CACHEREAD.

Definition at line 126 of file TFile.h.

◆ fgFileCounter

std::atomic< Long64_t > TFile::fgFileCounter {0}
staticprotected

Counter for all opened files.

Definition at line 132 of file TFile.h.

◆ fGlobalRegistration

bool TFile::fGlobalRegistration = true
protected

! if true, bypass use of global lists

Definition at line 115 of file TFile.h.

◆ fgOnlyStaged

Bool_t TFile::fgOnlyStaged = kFALSE
staticprotected

Before the file is opened, it is checked, that the file is staged, if not, the open fails.

Definition at line 128 of file TFile.h.

◆ fgOpenTimeout

UInt_t TFile::fgOpenTimeout = TFile::kEternalTimeout
staticprotected

Timeout for open operations in ms - 0 corresponds to blocking i/o.

Definition at line 127 of file TFile.h.

◆ fgReadaheadSize

Int_t TFile::fgReadaheadSize = 256000
staticprotected

Readahead buffer size.

Definition at line 134 of file TFile.h.

◆ fgReadCalls

std::atomic< Int_t > TFile::fgReadCalls {0}
staticprotected

Number of bytes read from all TFile objects.

Definition at line 133 of file TFile.h.

◆ fgReadInfo

Bool_t TFile::fgReadInfo = kTRUE
staticprotected

if true (default) ReadStreamerInfo is called when opening a file

Definition at line 135 of file TFile.h.

◆ fgTsSIHashes

ROOT::Internal::RConcurrentHashColl TFile::fgTsSIHashes
staticprotected

!TS Set of hashes built from read streamer infos

Definition at line 120 of file TFile.h.

◆ fInfoCache

TList* TFile::fInfoCache {nullptr}
protected

!Cached list of the streamer infos in this file

Definition at line 112 of file TFile.h.

◆ fInitDone

Bool_t TFile::fInitDone {kFALSE}
protected

!True if the file has been initialized

Definition at line 105 of file TFile.h.

◆ fIsArchive

Bool_t TFile::fIsArchive {kFALSE}
protected

!True if this is a pure archive file

Definition at line 102 of file TFile.h.

◆ fIsPcmFile

Bool_t TFile::fIsPcmFile {kFALSE}
protected

!True if the file is a ROOT pcm file.

Definition at line 107 of file TFile.h.

◆ fIsRootFile

Bool_t TFile::fIsRootFile {kTRUE}
protected

!True is this is a ROOT file, raw file otherwise

Definition at line 104 of file TFile.h.

◆ fMustFlush

Bool_t TFile::fMustFlush {kTRUE}
protected

!True if the file buffers must be flushed

Definition at line 106 of file TFile.h.

◆ fNbytesFree

Int_t TFile::fNbytesFree {0}
protected

Number of bytes for free segments structure.

Definition at line 85 of file TFile.h.

◆ fNbytesInfo

Int_t TFile::fNbytesInfo {0}
protected

Number of bytes for StreamerInfo record.

Definition at line 86 of file TFile.h.

◆ fNoAnchorInName

Bool_t TFile::fNoAnchorInName {kFALSE}
protected

!True if we don't want to force the anchor to be appended to the file name

Definition at line 103 of file TFile.h.

◆ fNProcessIDs

Int_t TFile::fNProcessIDs {0}
protected

Number of TProcessID written to this file.

Definition at line 88 of file TFile.h.

◆ fOffset

Long64_t TFile::fOffset {0}
protected

!Seek offset cache

Definition at line 96 of file TFile.h.

◆ fOpenPhases

TList* TFile::fOpenPhases {nullptr}
protected

!Time info about open phases

Definition at line 113 of file TFile.h.

◆ fOption

TString TFile::fOption
protected

File options.

Definition at line 91 of file TFile.h.

◆ fProcessIDs

TObjArray* TFile::fProcessIDs {nullptr}
protected

!Array of pointers to TProcessIDs

Definition at line 95 of file TFile.h.

◆ fReadCalls

Int_t TFile::fReadCalls {0}
protected

Number of read calls ( not counting the cache calls )

Definition at line 89 of file TFile.h.

◆ fRealName

TString TFile::fRealName
protected

Effective real file name (not original url)

Definition at line 90 of file TFile.h.

◆ fSeekFree

Long64_t TFile::fSeekFree {0}
protected

Location on disk of free segments structure.

Definition at line 80 of file TFile.h.

◆ fSeekInfo

Long64_t TFile::fSeekInfo {0}
protected

Location on disk of StreamerInfo record.

Definition at line 81 of file TFile.h.

◆ fSum2Buffer

Double_t TFile::fSum2Buffer {0}
protected

Sum of squares of buffer sizes of objects written so far.

Definition at line 74 of file TFile.h.

◆ fSumBuffer

Double_t TFile::fSumBuffer {0}
protected

Sum of buffer sizes of objects written so far.

Definition at line 73 of file TFile.h.

◆ fUnits

Char_t TFile::fUnits {0}
protected

Number of bytes for file pointers.

Definition at line 92 of file TFile.h.

◆ fUrl

TUrl TFile::fUrl
protected

!URL of file

Definition at line 110 of file TFile.h.

◆ fVersion

Int_t TFile::fVersion {0}
protected

File format version.

Definition at line 83 of file TFile.h.

◆ fWriteMutex

std::mutex TFile::fWriteMutex
protected

!Lock for writing baskets / keys into the file.

Definition at line 118 of file TFile.h.

◆ fWritten

Int_t TFile::fWritten {0}
protected

Number of objects written so far.

Definition at line 87 of file TFile.h.

Libraries for TFile:

The documentation for this class was generated from the following files: