* @ingroup pwglf_forward_scripts_corr
*/
void
-ExtractELoss(const char* fname="forward_eloss.root",
- UShort_t sys=1, UShort_t sNN=900, Short_t field=5, Bool_t mc=false)
+ExtractELoss(const char* fname="forward_eloss.root", Bool_t mc=false,
+ UShort_t sys=1, UShort_t sNN=900, Short_t field=5)
{
#ifdef __CINT__
gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
Error("ExtractELoss", "Couldn't open %s", fname);
return;
}
-
+
+ if (sys <= 0 || sys > 3 || sNN <= 0) {
+ TList* base = static_cast<TList*>(file->Get("Forward"));
+ if (!base) {
+ Error("ExtractELoss", "Couldn't get forward list from %s", fname);
+ return;
+ }
+ TList* insp = static_cast<TList*>(base->FindObject("fmdEventInspector"));
+ if (!insp) {
+ Error("ExtractELoss", "Couldn't get event inspector list from %s",fname);
+ return;
+ }
+ TObject* oSys = insp->FindObject("sys");
+ TObject* oSNN = insp->FindObject("sNN");
+ TObject* oFld = insp->FindObject("field");
+ if (oSys) sys = oSys->GetUniqueID();
+ if (oSNN) sNN = oSNN->GetUniqueID();
+ if (oFld) field = oFld->GetUniqueID();
+ }
+ if (sys <= 0 || sys > 3) {
+ Error("ExtractELoss", "Couldn't get system type (%d), "
+ "collision energy (%d), "
+ "and/or field strength (%d)", sys, sNN, field);
+ return;
+ }
+
TList* forward = static_cast<TList*>(file->Get("ForwardResults"));
// static_cast<TList*>(file->Get("PWGLFforwardDnDeta/Forward"));
if (!forward) {
AliForwardCorrectionManager& mgr = AliForwardCorrectionManager::Instance();
mgr.WriteFile(AliForwardCorrectionManager::kELossFits,
sys, sNN, field, mc, obj, false);
+
+ std::ofstream f("Upload.C");
+ if (!f) {
+ Error("ExtractELoss", "Failed to open Upload.C");
+ return;
+ }
+ f << "// Generated by ExtractELoss.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 fef(fcm.GetFileName(AliForwardCorrectionManager::kELossFits,
+ sys, sNN, field, mc));
+ TString fep(fcm.GetFilePath(AliForwardCorrectionManager::kELossFits,
+ sys, sNN, field, mc));
+ f << " TString src = \"" << fef << "\";\n"
+ << " TString dest = \"" << fep << "\";\n"
+ << " TString out; out.Form(\"%s%s\",url.GetUrl(),dest.Data());\n\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"
+ << " return;\n"
+ << " }\n"
+ << " }\n"
+ << " if (!TFile::Cp(src,out)) \n"
+ << " Warning(\"Upload\",\"Failed to upload %s -> %s\",\n"
+ << " src.Data(), out.Data());\n"
+ << "}\n"
+ << "// EOF"
+ << std::endl;
+ f.close();
+
+ Info("ExtracELoss",
+ "Run generated Upload.C(DEST) script to copy files in place");
+
}
UShort_t usNN = AliForwardUtil::ParseCenterOfMassEnergy(uSys,sNN);
Short_t sField = AliForwardUtil::ParseMagneticField(field);
- ExtractELoss(fname, uSys, usNN, sField, mc);
+ ExtractELoss(fname, mc, uSys, usNN, sField);
}
//____________________________________________________________________
ExtractFMDSecMap(file, sys, sNN, field);
ExtractSPDSecMap(file, sys, sNN, field);
ExtractSPDAcceptance(file, sys, sNN, field);
+ 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();
}
//____________________________________________________________________
Error("ExtractSecMap", "Couldn't open %s", fname);
return;
}
+ if (sys <= 0 || sys > 3) {
+ TList* forward = static_cast<TList*>(file->Get("ForwardSums"));
+ if (!forward) {
+ Error("ExtractSecMap", "Couldn't get forward list from %s", fname);
+ return;
+ }
+ TList* insp = static_cast<TList*>(forward->FindObject("fmdEventInspector"));
+ if (!insp) {
+ Error("ExtractSecMap", "Couldn't get event inspector list from %s",fname);
+ return;
+ }
+ TObject* oSys = insp->FindObject("sys");
+ TObject* oSNN = insp->FindObject("sNN");
+ TObject* oFld = insp->FindObject("field");
+ if (oSys) sys = oSys->GetUniqueID();
+ if (oSNN) sNN = oSNN->GetUniqueID();
+ if (oFld) field = oFld->GetUniqueID();
+ }
+ if (sys <= 0 || sys > 3) {
+ Error("ExtractSecMap", "Couldn't get system type (%d), "
+ "collision energy (%d), "
+ "and/or field strength (%d)", sys, sNN, field);
+ return;
+ }
ExtractFMDSecMap(file, sys, sNN, field);
ExtractSPDSecMap(file, sys, sNN, field);
+ ExtractSPDAcceptance(file, sys, sNN, field);
}
//____________________________________________________________________
AliCentralMultiplicityTask::Manager* mgr = new
AliCentralMultiplicityTask::Manager;
// mgr->Dump();
- mgr->Print();
+ // mgr->Print();
mgr->WriteFile(0, sys, sNN, field, spdCorr, false);
}
+//____________________________________________________________________
+/**
+ * Extract and copy SPD secondary map to file
+ *
+ * @param file Input file
+ * @param sys Collision system (1:pp, 2:PbPb)
+ * @param sNN Center of mass energy (GeV) per nucleon
+ * @param field L3 magnetic field
+ *
+ * @ingroup pwglf_forward_scripts_corr
+ */
+void
+ExtractSPDAcceptance(TFile* file, UShort_t sys, UShort_t sNN, Short_t field)
+{
+ TList* central = static_cast<TList*>(file->Get("CentralResults"));
+ // static_cast<TList*>(file->Get("PWGLFcentralDnDeta/Central"));
+ if (!central) {
+ Error("ExtractAcceptance", "Couldn't get central list from %s", fname);
+ return;
+ }
+
+ TString n(AliCentralCorrAcceptance::Class()->GetName());
+ TObject* spdCorr = central->FindObject(n);
+ if (!spdCorr) {
+ Error("ExtractAcceptance", "Couldn't get central correction object %s",
+ n.Data());
+ return;
+ }
+
+
+ AliCentralMultiplicityTask::Manager* mgr = new
+ AliCentralMultiplicityTask::Manager;
+ // mgr->Dump();
+ // mgr->Print();
+ mgr->WriteFile(1, sys, sNN, field, spdCorr, false);
+}
//____________________________________________________________________