From: Pierre Gueth Date: Thu, 7 Feb 2013 14:01:20 +0000 (+0100) Subject: switched to gjm merger for pet X-Git-Tag: v1.4.0~164^2~27 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=3816dd0b131a30c38733aa6db654baa008a529f6;p=clitk.git switched to gjm merger for pet --- diff --git a/tests_dav/clitkMergeRootFiles.cxx b/tests_dav/clitkMergeRootFiles.cxx index 957a8ed..ac11580 100644 --- a/tests_dav/clitkMergeRootFiles.cxx +++ b/tests_dav/clitkMergeRootFiles.cxx @@ -10,6 +10,7 @@ #include "clitkMergeRootFiles_ggo.h" #include "clitkCommon.h" +#include "GateMergeManager.hh" #include #include #include @@ -21,108 +22,11 @@ #include #include #include -#include using std::endl; using std::cout; typedef std::list Strings; -typedef std::list Handles; -typedef std::set StringsSet; - -void mergeSingleTree(TChain* chain, TFile* output_handle, const std::string& tree_name) -{ - assert(chain->FindBranch("runID")); - assert(chain->FindBranch("eventID")); - assert(chain->FindBranch("time")); - - int eventID = -1; - int runID = -1; - double time = -1; - - chain->SetBranchAddress("eventID",&eventID); - chain->SetBranchAddress("runID",&runID); - chain->SetBranchAddress("time",&time); - - output_handle->cd(); - TTree* output_tree = chain->CloneTree(0); - - const long int nentries = chain->GetEntries(); - for (long int kk=0; kkGetEntry(kk); - //cout << kk << "/" << chain->GetTreeNumber() << endl; - output_tree->Fill(); - } - - output_tree->Write(); - delete output_tree; -} - -void mergeGateTree(TChain* chain, TFile* output_handle, const std::string& tree_name) -{ -} - -void mergeCoinTree(TChain* chain, TFile* output_handle, const std::string& tree_name) -{ -} - -void mergePetRoot(const Strings& input_filenames, const std::string& output_filename) -{ - TFile* output_handle = TFile::Open(output_filename.c_str(),"RECREATE"); - - Handles input_handles; - StringsSet tree_names; - StringsSet h1_names; - StringsSet h2_names; - for (Strings::const_iterator iter=input_filenames.begin(); iter!=input_filenames.end(); iter++) - { - TFile* handle = TFile::Open(iter->c_str(),"READ"); - assert(handle); - - TIter key_next(handle->GetListOfKeys()); - while (TKey* key = static_cast(key_next())) - { - const std::string name = key->GetName(); - const bool is_tree = key->ReadObj()->InheritsFrom("TTree"); - const bool is_h1 = key->ReadObj()->InheritsFrom("TH1"); - const bool is_h2 = key->ReadObj()->InheritsFrom("TH2"); - if (is_tree) tree_names.insert(name); - if (is_h1) { h1_names.insert(name); cout << name << "## " << static_cast(key->ReadObj())->GetMean() << endl; } - if (is_h2) h2_names.insert(name); - } - - input_handles.push_back(handle); - } - - for (Handles::const_iterator iter=input_handles.begin(); iter!=input_handles.end(); iter++) - { - (*iter)->Close(); - delete *iter; - } - - cout << "found " << tree_names.size() << " tree "<< h1_names.size() << " histo1d " << h2_names.size() << " histo2d" << endl; - - { - cout << "merging trees" << endl; - for (StringsSet::const_iterator iter_tree=tree_names.begin(); iter_tree!=tree_names.end(); iter_tree++) - { - cout << " tree " << *iter_tree; - TChain* chain = new TChain(iter_tree->c_str()); - for (Strings::const_iterator iter_filename=input_filenames.begin(); iter_filename!=input_filenames.end(); iter_filename++) - chain->Add(iter_filename->c_str()); - cout << " nentries " << chain->GetEntries() << endl; - - if ((*iter_tree) == "Singles" || (*iter_tree) == "Hits") mergeSingleTree(chain,output_handle,*iter_tree); - if ((*iter_tree) == "Gate") mergeGateTree(chain,output_handle,*iter_tree); - if ((*iter_tree) == "Coincidences") mergeCoinTree(chain,output_handle,*iter_tree); - - delete chain; - } - } - - -} //----------------------------------------------------------------------------- @@ -160,7 +64,8 @@ int main(int argc, char * argv[]) { if (all_pet_output) { - mergePetRoot(input_filenames,args_info.output_arg); + GateMergeManager* manager = new GateMergeManager(args_info.fastmerge_given,args_info.verbose_arg,true,0,"."); + delete manager; return 0; } } diff --git a/tests_dav/clitkMergeRootFiles.ggo b/tests_dav/clitkMergeRootFiles.ggo index 4180c20..7baa396 100644 --- a/tests_dav/clitkMergeRootFiles.ggo +++ b/tests_dav/clitkMergeRootFiles.ggo @@ -8,5 +8,6 @@ purpose "Merge several ROOT files" option "config" - "Config file" string no option "input" i "Input ROOT filenames" string multiple yes option "output" o "Output ROOT filename" string yes - +option "fastmerge" f "Fast merge" optional +option "verbose" v "Verbose level" int optional