ROOT logo
#include "TFileMerger.h"
#include "TSystem.h"
#include <TString.h>

#include <map>
#include <iostream>
#include <fstream>
#include <string>

void MergeSet(const TString mergeFileName,
	      const TString runSetName = "runSet.txt",
	      const TString runFileName = "runFile.txt")
{
  // Author: Henrik.Qvigstad@cern.ch, 2012
  //
  // Use to merge sets of runs defined by file by name of 'runSetName'
  //
  // For some reason, it does not work without compiling:
  //
  // .L MergeSet.C+g
  // MergeSet()

  // Make runToFill map
  std::ifstream runFile;
  runFile.open(runFileName.Data());
  
  std::map<int, std::string> runToFile; // maps: run -> fill
  while (1) {
    int run=0;
    std::string file;
    runFile >> run >> file;
    if (!runFile.good()) break;
    runToFile[run] = file;
  }


  // Make FillMergers and add run files to them.
  std::ifstream runSet;
  TFileMerger* fileMerger = new TFileMerger(); // create merger
  fileMerger->OutputFile(mergeFileName.Data());
  runSet.open(runSetName.Data());
  Int_t runNumber=0;
  while (1) {
    runSet >> runNumber;
    if (!runSet.good()) break;

//     if(169553 == runNumber ) //169094 
//       continue;
    
    if( ! runToFile.count(runNumber) ) {
      Printf("can't map run %d to file", runNumber);
      continue;
    }
   
    std::string file = runToFile[runNumber];
    printf("adding %s: ", file.data());
    fileMerger->AddFile(file.data());
  }
  
  Printf("Merging %s...", mergeFileName.Data());
  fileMerger->Merge();
  Printf("Merging %s... done! \n", mergeFileName.Data());
  delete fileMerger;
}


void MergeTpcSets()
{
  MergeSet("AnalysisResults_GoodTpc.root", "../runsGoodTpcLHC11h.txt", "runFile.txt");
  MergeSet("AnalysisResults_SemiGoodTpc.root", "../runsSemiGoodTpcLHC11h.txt", "runFile.txt");
  MergeSet("AnalysisResults_BadTpc.root", "../runsBadTpcLHC11h.txt", "runFile.txt");
}
 MergeSet.C:1
 MergeSet.C:2
 MergeSet.C:3
 MergeSet.C:4
 MergeSet.C:5
 MergeSet.C:6
 MergeSet.C:7
 MergeSet.C:8
 MergeSet.C:9
 MergeSet.C:10
 MergeSet.C:11
 MergeSet.C:12
 MergeSet.C:13
 MergeSet.C:14
 MergeSet.C:15
 MergeSet.C:16
 MergeSet.C:17
 MergeSet.C:18
 MergeSet.C:19
 MergeSet.C:20
 MergeSet.C:21
 MergeSet.C:22
 MergeSet.C:23
 MergeSet.C:24
 MergeSet.C:25
 MergeSet.C:26
 MergeSet.C:27
 MergeSet.C:28
 MergeSet.C:29
 MergeSet.C:30
 MergeSet.C:31
 MergeSet.C:32
 MergeSet.C:33
 MergeSet.C:34
 MergeSet.C:35
 MergeSet.C:36
 MergeSet.C:37
 MergeSet.C:38
 MergeSet.C:39
 MergeSet.C:40
 MergeSet.C:41
 MergeSet.C:42
 MergeSet.C:43
 MergeSet.C:44
 MergeSet.C:45
 MergeSet.C:46
 MergeSet.C:47
 MergeSet.C:48
 MergeSet.C:49
 MergeSet.C:50
 MergeSet.C:51
 MergeSet.C:52
 MergeSet.C:53
 MergeSet.C:54
 MergeSet.C:55
 MergeSet.C:56
 MergeSet.C:57
 MergeSet.C:58
 MergeSet.C:59
 MergeSet.C:60
 MergeSet.C:61
 MergeSet.C:62
 MergeSet.C:63
 MergeSet.C:64
 MergeSet.C:65
 MergeSet.C:66
 MergeSet.C:67
 MergeSet.C:68
 MergeSet.C:69
 MergeSet.C:70
 MergeSet.C:71
 MergeSet.C:72
 MergeSet.C:73