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

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:404
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:54

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=0)
 Create a new folder and add it to the list of folders of this folder, return a pointer to the created folder.
 
virtual void Browse (TBrowser *b)
 Browse this folder.
 
virtual void Clear (Option_t *option="")
 Delete all objects from a folder list.
 
virtual void Copy (TObject &) const
 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.
 
virtual TObjectFindObject (const char *name) const
 Search object identified by name in the tree of folders inside this folder.
 
virtual TObjectFindObject (const TObject *obj) const
 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
 
Bool_t IsFolder () const
 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.
 
virtual void ls (Option_t *option="") const
 List folder contents.
 
virtual Int_t Occurence (const TObject *obj) const
 Return occurence number of object in the list of objects of this folder.
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove object from a folder.
 
virtual void Remove (TObject *obj)
 Remove object from this folder. obj must be a TObject or a TFolder.
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save all objects in this folder in filename.
 
virtual void SetOwner (Bool_t owner=kTRUE)
 Set ownership.
 
- 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.
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility.
 
virtual Int_t Compare (const TObject *obj) const
 Compare two TNamed objects.
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer.
 
virtual const char * GetName () const
 Returns name of object.
 
virtual const char * GetTitle () const
 Returns title of object.
 
virtual ULong_t Hash () const
 Return hash value for this object.
 
virtual Bool_t IsSortable () const
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator.
 
virtual void Print (Option_t *option="") const
 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.
 
- 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 for instance with: gROOT->SetSelectedPad(gPad).
 
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=0)
 Execute method on this object with the given parameter string, e.g.
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 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 [].
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator 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.
 
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=0, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory.
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory.
 

Protected Attributes

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

Private Member Functions

 TFolder (const TFolder &folder)
 Copy constructor.
 
void operator= (const TFolder &)
 

Additional Inherited Members

- Public Types inherited from TObject
enum  {
  kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 ,
  kBitMask = 0x00ffffff
}
 
enum  { kSingleKey = BIT(0) , kOverwrite = BIT(1) , kWriteDelete = BIT(2) }
 
enum  EDeprecatedStatusBits { kObjInCanvas = BIT(3) }
 
enum  EStatusBits {
  kCanDelete = BIT(0) , kMustCleanup = BIT(3) , kIsReferenced = BIT(4) , kHasUUID = BIT(5) ,
  kCannotPick = BIT(6) , kNoContextMenu = BIT(8) , kInvalidObject = BIT(13)
}
 
- Static Public Member Functions inherited from TObject
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 Types inherited from TObject
enum  { kOnlyPrepStep = BIT(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)
private

Copy constructor.

Definition at line 130 of file TFolder.cxx.

◆ 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 110 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 120 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 139 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 172 of file TFolder.cxx.

◆ AddFolder()

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

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 188 of file TFolder.cxx.

◆ Browse()

void TFolder::Browse ( TBrowser b)
virtual

Browse this folder.

Reimplemented from TObject.

Definition at line 219 of file TFolder.cxx.

◆ Clear()

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

Delete all objects from a folder list.

Reimplemented from TNamed.

Definition at line 227 of file TFolder.cxx.

◆ Copy()

virtual void TFolder::Copy ( TObject named) const
inlinevirtual

Copy this to obj.

Reimplemented from TNamed.

Definition at line 49 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 237 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 282 of file TFolder.cxx.

◆ FindObject() [1/2]

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

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 312 of file TFolder.cxx.

◆ FindObject() [2/2]

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

Find object in an folder.

Reimplemented from TObject.

Definition at line 291 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 349 of file TFolder.cxx.

◆ GetListOfFolders()

TCollection * TFolder::GetListOfFolders ( ) const
inline

Definition at line 55 of file TFolder.h.

◆ IsFolder()

Bool_t TFolder::IsFolder ( ) const
inlinevirtual

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 375 of file TFolder.cxx.

◆ ls()

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

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 TNamed.

Definition at line 394 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 433 of file TFolder.cxx.

◆ operator=()

void TFolder::operator= ( const TFolder )
private

◆ RecursiveRemove()

void TFolder::RecursiveRemove ( TObject obj)
virtual

Recursively remove object from a folder.

Reimplemented from TObject.

Definition at line 455 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 463 of file TFolder.cxx.

◆ SaveAs()

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

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 474 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 489 of file TFolder.cxx.

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