Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-24 10:31:06

0001 // Author: Philippe Canal May, 2011
0002 
0003 /*************************************************************************
0004  * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
0005  * All rights reserved.                                                  *
0006  *                                                                       *
0007  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0008  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0009  *************************************************************************/
0010 
0011 #ifndef ROOT_TFileMergeInfo
0012 #define ROOT_TFileMergeInfo
0013 
0014 //////////////////////////////////////////////////////////////////////////
0015 //                                                                      //
0016 // TFileMergeInfo                                                       //
0017 //                                                                      //
0018 // This class helps passing information from the TFileMerger to         //
0019 // the objects being merged.                                            //
0020 //                                                                      //
0021 // It provides access to the output directory pointer (fOutputDirectory)//
0022 // to whether or not this is the first time Merge is being called in the//
0023 // serie (for example for TTree, the first time we also need to Clone   //
0024 // the object on which Merge is called), and provides for a User Data   //
0025 // object to be passed along to each of the calls to Merge.             //
0026 // The fUserData object is owned by the TFileMergeInfo and will be      //
0027 // deleted when the TFileMerger moves on to the next set of objects.    //
0028 //                                                                      //
0029 //////////////////////////////////////////////////////////////////////////
0030 
0031 #include "TObject.h"
0032 
0033 #include "TString.h"
0034 
0035 class TDirectory;
0036 
0037 namespace ROOT {
0038 class TIOFeatures;
0039 }
0040 
0041 class TFileMergeInfo {
0042 private:
0043    using TIOFeatures = ROOT::TIOFeatures;
0044 
0045    TFileMergeInfo() = delete;
0046    TFileMergeInfo(const TFileMergeInfo&) = delete;
0047    TFileMergeInfo& operator=(const TFileMergeInfo&) = delete;
0048 
0049 public:
0050    TDirectory  *fOutputDirectory{nullptr}; // Target directory where the merged object will be written.
0051    Bool_t       fIsFirst{kTRUE};           // True if this is the first call to Merge for this series of object.
0052    TString      fOptions;                  // Additional text based option being passed down to customize the merge.
0053    TObject     *fUserData{nullptr};        // Place holder to pass extra information.  This object will be deleted at the end of each series of objects.
0054    TIOFeatures *fIOFeatures{nullptr};      // Any ROOT IO features that should be explicitly enabled.
0055 
0056    TFileMergeInfo(TDirectory *outputfile) : fOutputDirectory(outputfile) {}
0057    virtual ~TFileMergeInfo() { delete fUserData; } ;
0058 
0059    void Reset() { fIsFirst = kTRUE; delete fUserData; fUserData = nullptr; }
0060 
0061    ClassDef(TFileMergeInfo, 0);
0062 };
0063 
0064 #endif