#ifndef ALIFILEMERGER_H
#define ALIFILEMERGER_H
class TObjString;
#include "TNamed.h"
class AliFileMerger : public TNamed
{
public:
AliFileMerger();
AliFileMerger(const char* name);
virtual ~AliFileMerger();
void Merge(TFile* fileIn, TObjArray * array);
void IterTXT( const char * fileList, const char* outputFileName,Bool_t dontOverwrite=kFALSE);
void IterAlien(const char* outputDir, const char* outputFileName = "CalibObjects.root" , const char* pattern = "AliESDfriends_v1.root", Bool_t dontOverwrite=kFALSE);
void IterList(const TList* namesList, const char* outputFileName, Bool_t dontOverwrite=kFALSE);
void StoreResults(TObjArray * array, const char* outputFileName);
void StoreSeparateResults(TObjArray * array, const char* outputFileName);
Bool_t IsAccepted(TString name);
Bool_t IsRejected(TString name);
void AddReject(const char *reject);
void AddAccept(const char *accept);
void SetNoTrees(Bool_t v=kTRUE) {fNoTrees = v;}
Bool_t IsNoTrees() const {return fNoTrees;}
void SetMaxFilesOpen(Int_t n) {fMaxFilesOpen = n<3 ? 3 : n;}
Int_t GetMaxFilesOpen() const {return fMaxFilesOpen;}
protected:
int AddFile(TList* sourcelist, std::string entry);
int MergeRootfile( TDirectory *target, TList *sourceNames, Bool_t nameFiltering=kTRUE);
int OpenNextChunks(const TList* namesList, TList* filesList, Int_t from, Int_t to);
protected:
TObjArray * fRejectMask;
TObjArray * fAcceptMask;
Int_t fMaxFilesOpen;
Bool_t fNoTrees;
private:
AliFileMerger(const AliFileMerger&);
AliFileMerger& operator=(const AliFileMerger& other);
ClassDef(AliFileMerger, 2);
};
#endif