ROOT » IO » IO » TFileMerger

class TFileMerger: public TObject


TFileMerger

This class provides file copy and merging services.

It can be used to copy files (not only ROOT files), using TFile or
any of its remote file access plugins. It is therefore usefull in
a Grid environment where the files might be accessable via Castor,
rfio, dcap, etc.
The merging interface allows files containing histograms and trees
to be merged, like the standalone hadd program.


Function Members (Methods)

public:
virtual~TFileMerger()
voidTObject::AbstractMethod(const char* method) const
virtual Bool_tAddAdoptFile(TFile* source, Bool_t cpProgress = kTRUE)
virtual Bool_tAddFile(const char* url, Bool_t cpProgress = kTRUE)
virtual Bool_tAddFile(TFile* source, Bool_t cpProgress = kTRUE)
voidAddObjectNames(const char* name)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
voidClearObjectNames()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual const char*GetCWD()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
Int_tGetMaxOpenedFies() const
TList*GetMergeList() const
const char*GetMsgPrefix() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
const char*GetObjectNames() const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
TFile*GetOutputFile() const
const char*GetOutputFileName() const
Int_tGetPrintLevel() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
Bool_tHasCompressionChange() const
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tMerge(Bool_t = kTRUE)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual Bool_tOutputFile(const char* url, Bool_t force)
virtual Bool_tOutputFile(const char* url, const char* mode = "RECREATE")
virtual Bool_tOutputFile(const char* url, Bool_t force, Int_t compressionLevel)
virtual Bool_tOutputFile(const char* url, const char* mode, Int_t compressionLevel)
virtual voidTObject::Paint(Option_t* option = "")
virtual Bool_tPartialMerge(Int_t type = kAll | kIncremental)
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual voidPrintFiles(Option_t* options)
virtual Int_tTObject::Read(const char* name)
virtual voidRecursiveRemove(TObject* obj)
virtual voidReset()
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual Bool_tSetCWD(const char*)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetFastMethod(Bool_t fast = kTRUE)
voidSetMaxOpenedFiles(Int_t newmax)
voidSetMsgPrefix(const char* prefix)
virtual voidSetNotrees(Bool_t notrees = kFALSE)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPrintLevel(Int_t level)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
TFileMerger(Bool_t isLocal = kTRUE, Bool_t histoOneGo = kTRUE)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual Bool_tAddFile(TFile* source, Bool_t own, Bool_t cpProgress)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
virtual Bool_tMergeRecursive(TDirectory* target, TList* sourcelist, Int_t type = kRegular | kAll)
Bool_tOpenExcessFiles()

Data Members

public:
static TFileMerger::EPartialMergeTypekAll
static TFileMerger::EPartialMergeTypekAllIncremental
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TFileMerger::EPartialMergeTypekIncremental
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TFileMerger::EPartialMergeTypekKeepCompression
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TFileMerger::EPartialMergeTypekNonResetable
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EStatusBitsTObject::kObjInCanvas
static TFileMerger::EPartialMergeTypekOnlyListed
static TObject::(anonymous)TObject::kOverwrite
static TFileMerger::EPartialMergeTypekRegular
static TFileMerger::EPartialMergeTypekResetable
static TObject::(anonymous)TObject::kSingleKey
static TFileMerger::EPartialMergeTypekSkipListed
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
protected:
Bool_tfCompressionChangeTrue if the output and input have different compression level (default kFALSE)
TList*fExcessFiles! List of TObjString containing the name of the files not yet added to fFileList due to user or system limitiation on the max number of files opened.
Bool_tfExplicitCompLevelTrue if the user explicitly requested a compressio level change (default kFALSE)
Bool_tfFastMethodTrue if using Fast merging algorithm (default)
TList*fFileLista list the file (TFile*) which shall be merged
Bool_tfHistoOneGoMerger histos in one go (default is kTRUE)
Bool_tfLocalMakes local copies of merging files if True (default is kTRUE)
Int_tfMaxOpenedFilesMaximum number of files opened at the same time by the TFileMerger.
TList*fMergeListlist of TObjString containing the name of the files need to be merged
TStringfMsgPrefixPrefix to be used when printing informational message (default TFileMerger)
Bool_tfNoTreesTrue if Trees should not be merged (default is kFALSE)
TStringfObjectNamesList of object names to be either merged exclusively or skipped
TFile*fOutputFilethe outputfile for merging
TStringfOutputFilenamethe name of the outputfile for merging
Int_tfPrintLevelHow much information to print out at run time.
TStopwatchfWatchstop watch to measure file copy speed

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

TFileMerger(Bool_t isLocal = kTRUE, Bool_t histoOneGo = kTRUE)
 Create file merger object.
~TFileMerger()
 Cleanup.
void Reset()
 Reset merger file list.
Bool_t AddFile(const char* url, Bool_t cpProgress = kTRUE)
 Add file to file merger.
Bool_t AddFile(TFile* source, Bool_t cpProgress = kTRUE)
 Add the TFile to this file merger and *do not* give ownership of the TFile to this
 object.

 Return kTRUE if the addition was successful.
Bool_t AddAdoptFile(TFile* source, Bool_t cpProgress = kTRUE)
 Add the TFile to this file merger and give ownership of the TFile to this
 object (unless kFALSE is returned).

 Return kTRUE if the addition was successful.
Bool_t AddFile(TFile* source, Bool_t own, Bool_t cpProgress)
 Add the TFile to this file merger and give ownership of the TFile to this
 object (unless kFALSE is returned).

 Return kTRUE if the addition was successful.
Bool_t OutputFile(const char* url, Bool_t force, Int_t compressionLevel)
 Open merger output file.
Bool_t OutputFile(const char* url, Bool_t force)
 Open merger output file.
Bool_t OutputFile(const char* url, const char* mode, Int_t compressionLevel)
 Open merger output file.  'mode' is passed to the TFile constructor as the option, it should
 be one of 'NEW','CREATE','RECREATE','UPDATE'
 'UPDATE' is usually used in conjunction with IncrementalMerge.
Bool_t OutputFile(const char* url, const char* mode = "RECREATE")
 Open merger output file.  'mode' is passed to the TFile constructor as the option, it should
 be one of 'NEW','CREATE','RECREATE','UPDATE'
 'UPDATE' is usually used in conjunction with IncrementalMerge.
void PrintFiles(Option_t* options)
 Print list of files being merged.
Bool_t Merge(Bool_t = kTRUE)
 Merge the files. If no output file was specified it will write into
 the file "FileMerger.root" in the working directory. Returns true
 on success, false in case of error.
Bool_t MergeRecursive(TDirectory* target, TList* sourcelist, Int_t type = kRegular | kAll)
 Merge all objects in a directory
 The type is defined by the bit values in EPartialMergeType:
   kRegular      : normal merge, overwritting the output file (default)
   kIncremental  : merge the input file with the (existing) content of the output file (if already exising)
   kAll          : merge all type of objects (default)
   kResetable    : merge only the objects with a MergeAfterReset member function.
   kNonResetable : merge only the objects without a MergeAfterReset member function.
   kOnlyListed   : merge only objects listed in fObjectNames
   kSkipListed   : skip merging of objects listed in fObjectNames
   kKeepCompression : Keep compression level of the buffer as it is in each the original input files.
Bool_t PartialMerge(Int_t type = kAll | kIncremental)
 Merge the files. If no output file was specified it will write into
 the file "FileMerger.root" in the working directory. Returns true
 on success, false in case of error.
 The type is defined by the bit values in EPartialMergeType:
   kRegular      : normal merge, overwritting the output file
   kIncremental  : merge the input file with the content of the output file (if already exising) (default)
   kAll          : merge all type of objects (default)
   kResetable    : merge only the objects with a MergeAfterReset member function.
   kNonResetable : merge only the objects without a MergeAfterReset member function.

 If the type is set to kIncremental the output file is done deleted at the end of
 this operation.  If the type is not set to kIncremental, the output file is closed.
Bool_t OpenExcessFiles()
 Open up to fMaxOpenedFiles of the excess files.
void RecursiveRemove(TObject* obj)
 Intercept the case where the output TFile is deleted!
void SetMaxOpenedFiles(Int_t newmax)
 Set a limit to the number file that TFileMerger will opened at one time.
 If the request is higher than the system limit, we reset it to the system limit.
 If the request is less than two, we reset it to 2 (one for the output file and one for the input file).
void SetMsgPrefix(const char* prefix)
 Set the prefix to be used when printing informational message.
TFileMerger(const TFileMerger& )
TFileMerger& operator=(const TFileMerger& )
Int_t GetPrintLevel() const
{ return fPrintLevel; }
void SetPrintLevel(Int_t level)
{ fPrintLevel = level; }
Bool_t HasCompressionChange() const
{ return fCompressionChange; }
const char * GetOutputFileName() const
{ return fOutputFilename; }
TList * GetMergeList() const
{ return fMergeList; }
TFile * GetOutputFile() const
{ return fOutputFile; }
Int_t GetMaxOpenedFies() const
{ return fMaxOpenedFiles; }
const char * GetMsgPrefix() const
{ return fMsgPrefix; }
void AddObjectNames(const char* name)
{fObjectNames += name; fObjectNames += " ";}
const char * GetObjectNames() const
{return fObjectNames.Data();}
void ClearObjectNames()
Bool_t SetCWD(const char* )
--- file management interface
{ MayNotUse("SetCWD"); return kFALSE; }
const char * GetCWD()
{ MayNotUse("GetCWD"); return 0; }
void SetFastMethod(Bool_t fast = kTRUE)
{fFastMethod = fast;}
void SetNotrees(Bool_t notrees = kFALSE)
{fNoTrees = notrees;}