From: kleinb Date: Mon, 15 Nov 2010 11:10:47 +0000 (+0000) Subject: fixed directory booking, allow to update files in merging X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=57cd3e7cc90c8408e2ecc579aec5613bb9186be2;ds=sidebyside fixed directory booking, allow to update files in merging --- diff --git a/PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx b/PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx index 8aedc2ba3c1..b4b0bca2640 100644 --- a/PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx +++ b/PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx @@ -218,7 +218,7 @@ void AliAnalysisHelperJetTasks::GetClosestJets(AliAODJet *genJets,const Int_t &k } -void AliAnalysisHelperJetTasks::MergeOutputDirs(const char* cFiles,const char* cPattern,char *cOutFile){ +void AliAnalysisHelperJetTasks::MergeOutputDirs(const char* cFiles,const char* cPattern,const char *cOutFile,Bool_t bUpdate){ // Routine to merge only directories containing the pattern // TString outFile(cOutFile); @@ -228,14 +228,16 @@ void AliAnalysisHelperJetTasks::MergeOutputDirs(const char* cFiles,const char* // open all files TList fileList; char cFile[240]; - if(in1>>cFile){// only open the first file - fileList.Add(TFile::Open(cFile)); + while(in1>>cFile){// only open the first file + Printf("Adding %s",cFile); + TFile *f1 = TFile::Open(cFile); + fileList.Add(f1); } TFile *fOut = 0; if(fileList.GetEntries()){// open the first file TFile* fIn = dynamic_cast(fileList.At(0)); - if(fIn){ + if(!fIn){ Printf("Input File not Found"); } // fetch the keys for the directories @@ -249,14 +251,19 @@ void AliAnalysisHelperJetTasks::MergeOutputDirs(const char* cFiles,const char* if(dName.Contains(cPattern)){ // open new file if first match if(!fOut){ - fOut = new TFile(outFile.Data(),"RECREATE"); + if(bUpdate)fOut = new TFile(outFile.Data(),"UPDATE"); + else fOut = new TFile(outFile.Data(),"RECREATE"); } // merge all the stuff that is in this directory TList *llKeys = dir->GetListOfKeys(); TList *tmplist; TMethodCall callEnv; + + fOut->cd(); + TDirectory *dOut = fOut->mkdir(dir->GetName()); + for(int il = 0;il < llKeys->GetEntries();il++){ - TKey *lKey = (TKey*)llKeys->At(id); + TKey *lKey = (TKey*)llKeys->At(il); TObject *object = dynamic_cast(lKey->ReadObj()); // from TSeqCollections::Merge if(!object)continue; @@ -291,8 +298,8 @@ void AliAnalysisHelperJetTasks::MergeOutputDirs(const char* cFiles,const char* callEnv.SetParam((Long_t) tmplist); callEnv.Execute(object); delete tmplist;tmplist = 0; - fOut->cd(); - object->Write(); + dOut->cd(); + object->Write(object->GetName(),TObject::kSingleKey); } } } diff --git a/PWG4/JetTasks/AliAnalysisHelperJetTasks.h b/PWG4/JetTasks/AliAnalysisHelperJetTasks.h index 09cf8b60c95..e206f54dbf7 100644 --- a/PWG4/JetTasks/AliAnalysisHelperJetTasks.h +++ b/PWG4/JetTasks/AliAnalysisHelperJetTasks.h @@ -55,7 +55,7 @@ class AliAnalysisHelperJetTasks : public TObject { Int_t *iRecIndex, Int_t iDebug, Float_t maxDist = 0.5); - static void MergeOutputDirs(const char* cFiles,const char* cPattern,char *cOutFile); // merges all directories containing the pattern + static void MergeOutputDirs(const char* cFiles,const char* cPattern,const char *cOutFile,Bool_t bUpdate = false); // merges all directories containing the pattern static void MergeOutput(char* cFiles, char* cDir = "",char *cList = "",char* cOutFile ="allpt.root",Bool_t bUpdate = false); // Merges the files in the input text file needs the two histograms fh1PtHard_Trials, fh1Xsec and the name of the input list static Bool_t PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials);// get the cross section and the trails either from pyxsec.root or from pysec_hists.root