//
// Author: Jan.Fiete.Grosse-Oetringhaus@cern.ch
-TChain* CreateESDChain(const char* aDataDir = "ESDfiles.txt", Int_t aRuns = 20, Int_t offset = 0, Bool_t addFileName = kFALSE, Bool_t addFriend = kFALSE, Bool_t check = kFALSE)
+TChain* CreateESDChain(const char* aDataDir = "ESDfiles.txt", Int_t aRuns = 20, Int_t offset = 0, Bool_t addFileName = kFALSE, Bool_t addFriend = kFALSE, const char* check = 0)
{
// creates chain of files in a given directory or file containing a list.
// In case of directory the structure is expected as:
//
// if addFileName is true the list only needs to contain the directories that contain the AliESDs.root files
// if addFriend is true a file AliESDfriends.root is expected in the same directory and added to the chain as friend
+ // if check is != 0 the files that work are written back into the textfile with the name check
if (!aDataDir)
return 0;
ifstream in;
in.open(aDataDir);
+ ofstream outfile;
+ if (check)
+ outfile.open(check);
+
Int_t count = 0;
// Read the input list of files and add them to the chain
TString line;
- while(in.good())
+ while (in.good())
{
in >> line;
-
+
if (line.Length() == 0)
- continue;
-
+ continue;
+
if (offset > 0)
{
- --offset;
+ offset--;
continue;
}
file->Close();
}
+ outfile << line.Data() << endl;
printf("%s\n", line.Data());
}
}
in.close();
+
+ if (check)
+ outfile.close();
}
if (chainFriend)
ofstream outfile;
outfile.open(target);
- while ((obj = iter->Next()))
- outfile << obj->GetTitle() << endl;
+ while ((obj = iter->Next())) {
+ TString fileName(obj->GetTitle());
+
+ outfile << fileName.Data() << endl;
+ }
outfile.close();
delete iter;
}
+TObjArray* Chain2List(TChain* chain)
+{
+ // returns a TObjArray of TObjStrings of the file names in the chain
+
+ TObjArray* result = new TObjArray;
+
+ for (Int_t i=0; i<chain->GetListOfFiles()->GetEntries(); i++)
+ result->Add(new TObjString(chain->GetListOfFiles()->At(i)->GetTitle()));
+
+ return result;
+}
+
void LookupWrite(TChain* chain, const char* target)
{
// looks up the chain and writes the remaining files to the text file target
ChainToTextFile(chain, target);
}
+
+TChain* CreateChain(const char* treeName, const char* aDataDir, Int_t aRuns, Int_t offset = 0)
+{
+ // creates chain of files in a given directory or file containing a list.
+
+ if (!treeName || !aDataDir)
+ return 0;
+
+ TChain* chain = new TChain(treeName);
+
+ // Open the input stream
+ ifstream in;
+ in.open(aDataDir);
+
+ Int_t count = 0;
+
+ // Read the input list of files and add them to the chain
+ TString line;
+ while(in.good())
+ {
+ in >> line;
+
+ if (line.Length() == 0)
+ continue;
+
+ if (offset > 0)
+ {
+ --offset;
+ continue;
+ }
+
+ if (count++ == aRuns)
+ break;
+
+ chain->Add(line);
+ }
+
+ in.close();
+
+ return chain;
+}