ROOT logo
#ifndef ALIFILEMERGER_H
#define ALIFILEMERGER_H
 
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//////////////////////////////////////////////////////////////////////////
//
//  Utilities for file merging
//
//////////////////////////////////////////////////////////////////////////

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;  // mask of the objects to be rejected
  TObjArray * fAcceptMask;    // mask of the objects to be accepted
  Int_t       fMaxFilesOpen;  // max number of open files
  Bool_t      fNoTrees;       // do we merge trees
private:
  AliFileMerger(const AliFileMerger&);
  AliFileMerger& operator=(const AliFileMerger& other);
  
  ClassDef(AliFileMerger, 2); // File merger utilities for AliRoot
};

#endif
 AliFileMerger.h:1
 AliFileMerger.h:2
 AliFileMerger.h:3
 AliFileMerger.h:4
 AliFileMerger.h:5
 AliFileMerger.h:6
 AliFileMerger.h:7
 AliFileMerger.h:8
 AliFileMerger.h:9
 AliFileMerger.h:10
 AliFileMerger.h:11
 AliFileMerger.h:12
 AliFileMerger.h:13
 AliFileMerger.h:14
 AliFileMerger.h:15
 AliFileMerger.h:16
 AliFileMerger.h:17
 AliFileMerger.h:18
 AliFileMerger.h:19
 AliFileMerger.h:20
 AliFileMerger.h:21
 AliFileMerger.h:22
 AliFileMerger.h:23
 AliFileMerger.h:24
 AliFileMerger.h:25
 AliFileMerger.h:26
 AliFileMerger.h:27
 AliFileMerger.h:28
 AliFileMerger.h:29
 AliFileMerger.h:30
 AliFileMerger.h:31
 AliFileMerger.h:32
 AliFileMerger.h:33
 AliFileMerger.h:34
 AliFileMerger.h:35
 AliFileMerger.h:36
 AliFileMerger.h:37
 AliFileMerger.h:38
 AliFileMerger.h:39
 AliFileMerger.h:40
 AliFileMerger.h:41
 AliFileMerger.h:42
 AliFileMerger.h:43
 AliFileMerger.h:44
 AliFileMerger.h:45
 AliFileMerger.h:46
 AliFileMerger.h:47
 AliFileMerger.h:48
 AliFileMerger.h:49
 AliFileMerger.h:50
 AliFileMerger.h:51
 AliFileMerger.h:52
 AliFileMerger.h:53
 AliFileMerger.h:54
 AliFileMerger.h:55
 AliFileMerger.h:56
 AliFileMerger.h:57
 AliFileMerger.h:58
 AliFileMerger.h:59