+ WriteUploadScript(sys, sNN, field);
+ Info("ExtracMCCorr",
+ "Run generated Upload.C(DEST) script to copy files in place");
+}
+
+//____________________________________________________________________
+void WriteUploadScript(UShort_t sys, UShort_t sNN, Short_t field)
+{
+ std::ofstream f("Upload.C");
+ if (!f) {
+ Error("WriteUploadScript", "Failed to open Upload.C");
+ return;
+ }
+ f << "// Generated by ExtractMCCorr.C\n"
+ << "void Upload(const TUrl& url)\n"
+ << "{\n"
+ << " if (TString(\"alien\").EqualTo(url.GetProtocol())) {\n"
+ << " if (!TGrid::Connect(\"alien://\")) {\n"
+ << " Error(\"Upload\", \"Failed to connect to AliEn\");\n"
+ << " return;\n"
+ << " }\n"
+ << " }\n\n";
+
+ AliForwardCorrectionManager& fcm =
+ AliForwardCorrectionManager::Instance();
+ fcm.SetPrefix("");
+ TString fsf(fcm.GetFileName(AliForwardCorrectionManager::kSecondaryMap,
+ sys, sNN, field, false));
+ TString fsp(fcm.GetFilePath(AliForwardCorrectionManager::kSecondaryMap,
+ sys, sNN, field, false));
+ AliCentralMultiplicityTask::Manager* mgr = new
+ AliCentralMultiplicityTask::Manager;
+ mgr->SetSecMapPath("/CentralSecMap");
+ mgr->SetAcceptancePath("/CentralAcceptance");
+ TString csf(mgr->GetFileName(0, sys, sNN, field));
+ TString csp(mgr->GetFullFileName(0, sys, sNN, field));
+ TString caf(mgr->GetFileName(1, sys, sNN, field));
+ TString cap(mgr->GetFullFileName(1, sys, sNN, field));
+
+ f << " const char* src[] = {\n"
+ << " \"" << fsf << "\",\n"
+ << " \"" << csf << "\",\n"
+ << " \"" << caf << "\",\n"
+ << " 0 };\n"
+ << " const char* dest[] = {\n"
+ << " \"" << fsp << "\",\n"
+ << " \"" << csp << "\",\n"
+ << " \"" << cap << "\",\n"
+ << " 0 };\n\n"
+ << " const char** psrc = src;\n"
+ << " const char** pdest = dest;\n"
+ << " while (*psrc && *pdest) {\n"
+ << " TString out; out.Form(\"%s%s\",url.GetUrl(),*pdest);\n"
+ << " TString dir(gSystem->DirName(out));\n"
+ << " if (gSystem->AccessPathName(dir)) {\n"
+ << " if (gSystem->mkdir(dir, true) < 0) {\n"
+ << " Warning(\"Upload\",\"Failed to make directory %s\","
+ << " dir.Data());\n"
+ << " continue;\n"
+ << " }\n"
+ << " }\n"
+ << " if (!TFile::Cp(*psrc, out.Data())) \n"
+ << " Warning(\"Upload\",\"Failed to upload %s -> %s\",\n"
+ << " *psrc, out.Data());\n"
+ << " psrc++;\n"
+ << " pdest++;\n"
+ << " };\n"
+ << "}\n"
+ << "// EOF"
+ << std::endl;
+ f.close();