/**
* Create a file collection in a ROOT file
*
* @param dir Input directory
* @param tN Tree name
* @param pa File name pattern
* @param mc If true, simulations
* @param recursive Scan recursively
*
* @ingroup pwglf_forward_trains_helper
*/
void
CreateFileCollection(const TString& dir="/data/alice/data/ppb/LHC12g/pass1/188359/",
const TString& tN="esdTree",
const TString& pa="AliESD*",
Bool_t mc=false,
Bool_t recursive=false)
)
{
gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/trains/ChainBuilder.C+");
UShort_t flags = 0;
if (recursive) flags |= ChainBuilder::kRecursive;
if (mc) flags |= ChainBuilder::kMC;
UShort_t type = ChainBuilder::CheckSource(dir, flags);
Info("", "type=%d, dir=%s tN=%s pa=%s, flags=0x%x", type,
dir.Data(), tN.Data(), pa.Data(), flags);
TChain* chain = ChainBuilder::Create(type, dir, tN, pa, flags);
if (!chain) {
Error("CreateFileCollection", "Failed to make chain");
return;
}
Int_t port;
TString host;
{
TUrl u(Form("root://%s//foo", gSystem->HostName()));
port = u.GetPort() * 10;
host = u.GetHostFQDN();
}
TFileCollection* fc = new TFileCollection("files");
TObjArray* cEs = chain->GetListOfFiles();
TChainElement* cE = 0;
TIter next(cEs);
while ((cE= static_cast<TChainElement*>(next()))) {
TString fN(cE->GetTitle());
TFile* f = TFile::Open(fN, "READ");
TTree* t = static_cast<TTree*>(f->Get(tN));
fN.Prepend(Form("root://%s:%d/", host.Data(), port));
TFileInfo* fi = new TFileInfo(Form("%s tree:%s,%d",
fN.Data(), tN.Data(), t->GetEntries()),
f->GetSize());
f->Close();
fc->Add(fi);
}
fc->Print("F");
TFile* files = TFile::Open("files.root", "RECREATE");
fc->Write();
files->Close();
}
//
// EOF
//
CreateFileCollection.C:10 CreateFileCollection.C:11 CreateFileCollection.C:12 CreateFileCollection.C:13 CreateFileCollection.C:14 CreateFileCollection.C:15 CreateFileCollection.C:16 CreateFileCollection.C:17 CreateFileCollection.C:18 CreateFileCollection.C:19 CreateFileCollection.C:20 CreateFileCollection.C:21 CreateFileCollection.C:22 CreateFileCollection.C:23 CreateFileCollection.C:24 CreateFileCollection.C:25 CreateFileCollection.C:26 CreateFileCollection.C:27 CreateFileCollection.C:28 CreateFileCollection.C:29 CreateFileCollection.C:30 CreateFileCollection.C:31 CreateFileCollection.C:32 CreateFileCollection.C:33 CreateFileCollection.C:34 CreateFileCollection.C:35 CreateFileCollection.C:36 CreateFileCollection.C:37 CreateFileCollection.C:38 CreateFileCollection.C:39 CreateFileCollection.C:40 CreateFileCollection.C:41 CreateFileCollection.C:42 CreateFileCollection.C:43 CreateFileCollection.C:44 CreateFileCollection.C:45 CreateFileCollection.C:46 CreateFileCollection.C:47 CreateFileCollection.C:48 CreateFileCollection.C:49 CreateFileCollection.C:50 CreateFileCollection.C:51 CreateFileCollection.C:52 CreateFileCollection.C:53 CreateFileCollection.C:54 CreateFileCollection.C:55 CreateFileCollection.C:56 CreateFileCollection.C:57 CreateFileCollection.C:58 CreateFileCollection.C:59 CreateFileCollection.C:60 CreateFileCollection.C:61 CreateFileCollection.C:62 CreateFileCollection.C:63 CreateFileCollection.C:64 CreateFileCollection.C:65 CreateFileCollection.C:66 CreateFileCollection.C:67 CreateFileCollection.C:68