2 =================================================
3 * @file clitkMergeRootFiles.cxx
4 * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
9 =================================================*/
11 #include "clitkMergeRootFiles_ggo.h"
12 #include "clitkCommon.h"
13 #include "GateMergeManager.hh"
16 #include <TPluginManager.h>
19 #include <TFileMerger.h>
29 typedef std::list<std::string> Strings;
32 //-----------------------------------------------------------------------------
33 int main(int argc, char * argv[]) {
35 gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo", "*",
36 "TStreamerInfo", "RIO", "TStreamerInfo()");
39 GGO(clitkMergeRootFiles, args_info);
42 if (args_info.input_given < 2) {
43 FATAL("Error, please provide at least two inputs files");
46 { // Detect Pet output
47 bool all_pet_output = true;
48 Strings input_filenames;
49 for (uint i=0; i<args_info.input_given; i++)
51 const char* filename = args_info.input_arg[i];
52 input_filenames.push_back(filename);
53 TFile* handle = TFile::Open(filename,"READ");
55 TTree* hits = dynamic_cast<TTree*>(handle->Get("Hits"));
56 TTree* singles = dynamic_cast<TTree*>(handle->Get("Singles"));
57 const bool is_pet_output = (hits!=NULL) && (singles!=NULL);
58 cout << "testing " << filename << " is_pet_output " << is_pet_output << endl;
61 all_pet_output &= is_pet_output;
63 cout << "all_pet_output " << all_pet_output << endl;
67 GateMergeManager* manager = new GateMergeManager(args_info.fastmerge_given,args_info.verbose_arg,true,0,".");
75 TFileMerger * merger = new TFileMerger;
76 for (uint i=0; i<args_info.input_given; i++) merger->AddFile(args_info.input_arg[i]);
77 merger->OutputFile(args_info.output_arg);
80 // this is the end my friend
83 //-----------------------------------------------------------------------------