@@ -133,29 +133,47 @@ void utils::addFECInfo()
133133 h->SetTitle(title.data());
134134}
135135
136- void utils::saveCanvases(TObjArray& arr, std::string_view outDir, std::string_view types, std::string_view rootFileName , std::string nameAdd)
136+ void utils::saveCanvases(TObjArray& arr, std::string_view outDir, std::string_view types, std::string_view singleOutFileName , std::string nameAdd)
137137{
138138 if (types.size()) {
139139 for (auto c : arr) {
140140 utils::saveCanvas(*static_cast<TCanvas*>(c), outDir, types, nameAdd);
141141 }
142142 }
143143
144- if (rootFileName.size()) {
145- std::unique_ptr<TFile> outFile(TFile::Open(fmt::format("{}/{}", outDir, rootFileName).data(), "recreate"));
146- arr.Write(arr.GetName(), TObject::kSingleKey);
147- outFile->Close();
144+ if (singleOutFileName.size()) {
145+ const auto outFileNames = o2::utils::Str::tokenize(singleOutFileName.data(), ',');
146+ for (const auto& outFileName : outFileNames) {
147+ auto fileName = fmt::format("{}/{}", outDir, outFileName);
148+ if (o2::utils::Str::endsWith(outFileName, ".root")) {
149+ std::unique_ptr<TFile> outFile(TFile::Open(fileName.data(), "recreate"));
150+ arr.Write(arr.GetName(), TObject::kSingleKey);
151+ outFile->Close();
152+ } else if (o2::utils::Str::endsWith(outFileName, ".pdf")) {
153+ const auto nCanv = arr.GetEntries();
154+ for (int i = 0; i < nCanv; ++i) {
155+ auto fileName2 = fileName;
156+ if (i == 0) {
157+ fileName2 += "(";
158+ } else if (i == nCanv - 1) {
159+ fileName2 += ")";
160+ }
161+ auto c = static_cast<TCanvas*>(arr.UncheckedAt(i));
162+ c->Print(fileName2.data(), fmt::format("Title:{}", c->GetTitle()).data());
163+ }
164+ }
165+ }
148166 }
149167}
150168
151- void utils::saveCanvases(std::vector<TCanvas*>& canvases, std::string_view outDir, std::string_view types, std::string_view rootFileName , std::string nameAdd)
169+ void utils::saveCanvases(std::vector<TCanvas*>& canvases, std::string_view outDir, std::string_view types, std::string_view singleOutFileName , std::string nameAdd)
152170{
153171 TObjArray arr;
154172 for (auto c : canvases) {
155173 arr.Add(c);
156174 }
157175
158- saveCanvases(arr, outDir, types, rootFileName , nameAdd);
176+ saveCanvases(arr, outDir, types, singleOutFileName , nameAdd);
159177}
160178
161179void utils::saveCanvas(TCanvas& c, std::string_view outDir, std::string_view types, std::string nameAdd)
0 commit comments