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

Legacy Code

TFolder is a legacy interface: there will be no bug fixes nor new developments. Therefore it is not recommended to use it in new long-term production code. But, depending on the context, using TFolder might still be a valid solution.

A TFolder object is a collection of objects and folders. Folders have a name and a title and are identified in the folder hierarchy by a "Unix-like" naming mechanism. The root of all folders is //root. New folders can be dynamically added or removed to/from a folder. The folder hierarchy can be visualized via the TBrowser.

The Root folders hierarchy can be seen as a whiteboard where objects are posted. Other classes/tasks can access these objects by specifying only a string pathname. This whiteboard facility greatly improves the modularity of an application, minimizing the class relationship problem that penalizes large applications.

Pointers are efficient to communicate between classes. However, one has interest to minimize direct coupling between classes in the form of direct pointers. One better uses the naming and search service provided by the Root folders hierarchy. This makes the classes loosely coupled and also greatly facilitates I/O operations. In a client/server environment, this mechanism facilitates the access to any kind of object in //root stores running on different processes.

A TFolder is created by invoking the TFolder constructor. It is placed inside an existing folder via the TFolder::AddFolder method. One can search for a folder or an object in a folder using the FindObject method. FindObject analyses the string passed as its argument and searches in the hierarchy until it finds an object or folder matching the name.

When a folder is deleted, its reference from the parent folder and possible other folders is deleted.

If a folder has been declared the owner of its objects/folders via TFolder::SetOwner, then the contained objects are deleted when the folder is deleted. By default, a folder does not own its contained objects.

NOTE that folder ownership can be set

Standard Root objects are automatically added to the folder hierarchy. For example, the following folders exist: root/Files with the list of currently connected Root files root/Classes with the list of active classes root/Geometries with active geometries root/Canvases with the list of active canvases root/Styles with the list of graphics styles root/Colors with the list of active colors

For example, if a file "myFile.root" is added to the list of files, one can retrieve a pointer to the corresponding TFile object with a statement like:

TFile *myFile = (TFile*)gROOT->FindObject("//root/Files/myFile.root");
#define gROOT
Definition TROOT.h:405
TObject * FindObject(const char *name) const override
Find object by name in the list of memory objects.
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition TFile.h:51

The above statement can be abbreviated to:

TFile *myFile = (TFile*)gROOT->FindObject("/Files/myFile.root");

or even to:

TFile *myFile = (TFile*)gROOT->FindObjectAny("myFile.root");
TObject * FindObjectAny(const char *name) const override
Find object by name in the list of memory objects of the current directory or its sub-directories.

In this last case, the TROOT::FindObjectAny function will scan the folder hierarchy starting at //root and will return the first object named "myFile.root".

Because a string-based search mechanism is expensive, it is recommended to save the pointer to the object as a class member or local variable if this pointer is used frequently or inside loops.

Definition at line 30 of file TFolder.h.

Public Member Functions

 TFolder ()
 Default constructor used by the Input functions.
 
 TFolder (const char *name, const char *title)
 Create a normal folder.
 
virtual ~TFolder ()
 Folder destructor.
 
virtual void Add (TObject *obj)
 Add object to this folder. obj must be a TObject or a TFolder.
 
TFolderAddFolder (const char *name, const char *title, TCollection *collection=nullptr)
 Create a new folder and add it to the list of folders of this folder, return a pointer to the created folder.
 
void Browse (TBrowser *b) override
 Browse this folder.
 
void Clear (Option_t *option="") override
 Delete all objects from a folder list.
 
void Copy (TObject &) const override
 Copy this to obj.
 
virtual const char * FindFullPathName (const char *name) const
 Return the full pathname corresponding to subpath name if the node is gROOT->GetRootFolder() and return a relative path otherwise.
 
virtual const char * FindFullPathName (const TObject *obj) const
 Return the full pathname corresponding to subpath name.
 
TObjectFindObject (const char *name) const override
 Search object identified by name in the tree of folders inside this folder.
 
TObjectFindObject (const TObject *obj) const override
 Find object in an folder.
 
virtual TObjectFindObjectAny (const char *name) const
 Return a pointer to the first object with name starting at this folder.
 
TCollectionGetListOfFolders () const
 
TClassIsA () const override
 
Bool_t IsFolder () const override
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
 
Bool_t IsOwner () const
 Folder ownership has been set via.
 
void ls (Option_t *option="") const override
 List folder contents.
 
virtual Int_t Occurence (const TObject *obj) const
 Return occurence number of object in the list of objects of this folder.
 
void RecursiveRemove (TObject *obj) override
 Recursively remove object from a folder.
 
virtual void Remove (TObject *obj)
 Remove object from this folder. obj must be a TObject or a TFolder.
 
void SaveAs (const char *filename="", Option_t *option="") const override
 Save all objects in this folder in filename.
 
virtual void SetOwner (Bool_t owner=kTRUE)
 Set ownership.
 
void Streamer (TBuffer &) override
 Stream an object of class TObject.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- 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.
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer.
 
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 SetName (const char *name)
 Set the name of the TNamed.
 
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.
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject.
 
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 void Delete (Option_t *option="")
 Delete this object.
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object.
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects.
 
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 Option_tGetOption () const
 
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.
 
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)
 Operator delete [].
 
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 Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself.
 
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 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.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory.
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory.
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- 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 Attributes

TCollectionfFolders
 
Bool_t fIsOwner
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Private Member Functions

 TFolder (const TFolder &folder)=delete
 
void operator= (const TFolder &)=delete
 

Additional Inherited Members

- 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 ))
}
 
- Protected Types inherited from TObject
enum  { kOnlyPrepStep = (1ULL << ( 3 )) }
 
- 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 ()
 

#include <TFolder.h>

Inheritance diagram for TFolder:
[legend]

Constructor & Destructor Documentation

◆ TFolder() [1/3]

TFolder::TFolder ( const TFolder folder)
privatedelete

◆ TFolder() [2/3]

TFolder::TFolder ( )

Default constructor used by the Input functions.

This constructor should not be called by a user directly. The normal way to create a folder is by calling TFolder::AddFolder.

Definition at line 112 of file TFolder.cxx.

◆ TFolder() [3/3]

TFolder::TFolder ( const char *  name,
const char *  title 
)

Create a normal folder.

Use Add or AddFolder to add objects or folders to this folder.

Definition at line 122 of file TFolder.cxx.

◆ ~TFolder()

TFolder::~TFolder ( )
virtual

Folder destructor.

Remove all objects from its lists and delete all its sub folders.

Definition at line 133 of file TFolder.cxx.

Member Function Documentation

◆ Add()

void TFolder::Add ( TObject obj)
virtual

Add object to this folder. obj must be a TObject or a TFolder.

Definition at line 166 of file TFolder.cxx.

◆ AddFolder()

TFolder * TFolder::AddFolder ( const char *  name,
const char *  title,
TCollection collection = nullptr 
)

Create a new folder and add it to the list of folders of this folder, return a pointer to the created folder.

Note that a folder can be added to several folders.

If collection is non NULL, the pointer fFolders is set to the existing collection, otherwise a default collection (Tlist) is created. Note that the folder name cannot contain slashes.

Definition at line 182 of file TFolder.cxx.

◆ Browse()

void TFolder::Browse ( TBrowser b)
overridevirtual

Browse this folder.

Reimplemented from TObject.

Definition at line 213 of file TFolder.cxx.

◆ Class()

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

◆ Class_Name()

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

◆ Class_Version()

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

Definition at line 65 of file TFolder.h.

◆ Clear()

void TFolder::Clear ( Option_t option = "")
overridevirtual

Delete all objects from a folder list.

Reimplemented from TObject.

Definition at line 221 of file TFolder.cxx.

◆ Copy()

void TFolder::Copy ( TObject object) const
inlineoverridevirtual

Copy this to obj.

Reimplemented from TObject.

Definition at line 49 of file TFolder.h.

◆ DeclFileName()

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

Definition at line 65 of file TFolder.h.

◆ FindFullPathName() [1/2]

const char * TFolder::FindFullPathName ( const char *  name) const
virtual

Return the full pathname corresponding to subpath name if the node is gROOT->GetRootFolder() and return a relative path otherwise.

The returned path will be re-used by the next call to FindFullPathName().

Definition at line 231 of file TFolder.cxx.

◆ FindFullPathName() [2/2]

const char * TFolder::FindFullPathName ( const TObject obj) const
virtual

Return the full pathname corresponding to subpath name.

The returned path will be re-used by the next call to FindFullPathName().

Definition at line 276 of file TFolder.cxx.

◆ FindObject() [1/2]

TObject * TFolder::FindObject ( const char *  name) const
overridevirtual

Search object identified by name in the tree of folders inside this folder.

Name may be of the forms:

A. Specify a full pathname starting at the top ROOT folder //root/xxx/yyy/name

B. Specify a pathname starting with a single slash. //root is assumed /xxx/yyy/name

C. Specify a pathname relative to this folder xxx/yyy/name name

Reimplemented from TObject.

Definition at line 306 of file TFolder.cxx.

◆ FindObject() [2/2]

TObject * TFolder::FindObject ( const TObject obj) const
overridevirtual

Find object in an folder.

Reimplemented from TObject.

Definition at line 285 of file TFolder.cxx.

◆ FindObjectAny()

TObject * TFolder::FindObjectAny ( const char *  name) const
virtual

Return a pointer to the first object with name starting at this folder.

Definition at line 343 of file TFolder.cxx.

◆ GetListOfFolders()

TCollection * TFolder::GetListOfFolders ( ) const
inline

Definition at line 55 of file TFolder.h.

◆ IsA()

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

Reimplemented from TObject.

Definition at line 65 of file TFolder.h.

◆ IsFolder()

Bool_t TFolder::IsFolder ( ) const
inlineoverridevirtual

Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).

Reimplemented from TObject.

Definition at line 56 of file TFolder.h.

◆ IsOwner()

Bool_t TFolder::IsOwner ( ) const

Folder ownership has been set via.

Definition at line 369 of file TFolder.cxx.

◆ ls()

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

List folder contents.

If option contains "dump", the Dump function of contained objects is called.

If option contains "print", the Print function of contained objects is called.

By default the ls function of contained objects is called.

Indentation is used to identify the folder tree.

The if option contains a <regexp> it be used to match the name of the objects.

Reimplemented from TObject.

Definition at line 388 of file TFolder.cxx.

◆ Occurence()

Int_t TFolder::Occurence ( const TObject object) const
virtual

Return occurence number of object in the list of objects of this folder.

The function returns the number of objects with the same name as object found in the list of objects in this folder before object itself. If only one object is found, return 0.

Definition at line 427 of file TFolder.cxx.

◆ operator=()

void TFolder::operator= ( const TFolder )
privatedelete

◆ RecursiveRemove()

void TFolder::RecursiveRemove ( TObject obj)
overridevirtual

Recursively remove object from a folder.

Reimplemented from TObject.

Definition at line 449 of file TFolder.cxx.

◆ Remove()

void TFolder::Remove ( TObject obj)
virtual

Remove object from this folder. obj must be a TObject or a TFolder.

Definition at line 457 of file TFolder.cxx.

◆ SaveAs()

void TFolder::SaveAs ( const char *  filename = "",
Option_t option = "" 
) const
overridevirtual

Save all objects in this folder in filename.

Each object in this folder will have a key in the file where the name of the key will be the name of the object.

Reimplemented from TObject.

Definition at line 468 of file TFolder.cxx.

◆ SetOwner()

void TFolder::SetOwner ( Bool_t  owner = kTRUE)
virtual

Set ownership.

If the folder is declared owner, when the folder is deleted, all the objects added via TFolder::Add are deleted via TObject::Delete, otherwise TObject::Clear is called.

NOTE that folder ownership can be set:

Definition at line 483 of file TFolder.cxx.

◆ Streamer()

void TFolder::Streamer ( TBuffer R__b)
overridevirtual

Stream an object of class TObject.

Reimplemented from TObject.

◆ StreamerNVirtual()

void TFolder::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 65 of file TFolder.h.

Member Data Documentation

◆ fFolders

TCollection* TFolder::fFolders
protected

Definition at line 33 of file TFolder.h.

◆ fIsOwner

Bool_t TFolder::fIsOwner
protected

Definition at line 34 of file TFolder.h.

  • core/base/inc/TFolder.h
  • core/base/src/TFolder.cxx