]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/PHOSTasks/PHOS_PbPb/macros/LEGO/MergeSet.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGGA / PHOSTasks / PHOS_PbPb / macros / LEGO / MergeSet.C
1 #include "TFileMerger.h"
2 #include "TSystem.h"
3 #include <TString.h>
4
5 #include <map>
6 #include <iostream>
7 #include <fstream>
8 #include <string>
9
10 void MergeSet(const TString mergeFileName,
11               const TString runSetName = "runSet.txt",
12               const TString runFileName = "runFile.txt")
13 {
14   // Author: Henrik.Qvigstad@cern.ch, 2012
15   //
16   // Use to merge sets of runs defined by file by name of 'runSetName'
17   //
18   // For some reason, it does not work without compiling:
19   //
20   // .L MergeSet.C+g
21   // MergeSet()
22
23   // Make runToFill map
24   std::ifstream runFile;
25   runFile.open(runFileName.Data());
26   
27   std::map<int, std::string> runToFile; // maps: run -> fill
28   while (1) {
29     int run=0;
30     std::string file;
31     runFile >> run >> file;
32     if (!runFile.good()) break;
33     runToFile[run] = file;
34   }
35
36
37   // Make FillMergers and add run files to them.
38   std::ifstream runSet;
39   TFileMerger* fileMerger = new TFileMerger(); // create merger
40   fileMerger->OutputFile(mergeFileName.Data());
41   runSet.open(runSetName.Data());
42   Int_t runNumber=0;
43   while (1) {
44     runSet >> runNumber;
45     if (!runSet.good()) break;
46
47 //     if(169553 == runNumber ) //169094 
48 //       continue;
49     
50     if( ! runToFile.count(runNumber) ) {
51       Printf("can't map run %d to file", runNumber);
52       continue;
53     }
54    
55     std::string file = runToFile[runNumber];
56     printf("adding %s: ", file.data());
57     fileMerger->AddFile(file.data());
58   }
59   
60   Printf("Merging %s...", mergeFileName.Data());
61   fileMerger->Merge();
62   Printf("Merging %s... done! \n", mergeFileName.Data());
63   delete fileMerger;
64 }
65
66
67 void MergeTpcSets()
68 {
69   MergeSet("AnalysisResults_GoodTpc.root", "../runsGoodTpcLHC11h.txt", "runFile.txt");
70   MergeSet("AnalysisResults_SemiGoodTpc.root", "../runsSemiGoodTpcLHC11h.txt", "runFile.txt");
71   MergeSet("AnalysisResults_BadTpc.root", "../runsBadTpcLHC11h.txt", "runFile.txt");
72 }