]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Various fixes and more automation
authorcholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Oct 2012 20:49:31 +0000 (20:49 +0000)
committercholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Oct 2012 20:49:31 +0000 (20:49 +0000)
PWGLF/FORWARD/analysis2/corrs/ExtractELoss.C
PWGLF/FORWARD/analysis2/corrs/ExtractMCCorr.C
PWGLF/FORWARD/analysis2/corrs/ExtractSecMap.C

index 8b0cbefbbf5cc0a9a968a60ddac9f279f40a30ee..b73ab81af4c306220ab8f1707069a30f9d1efe45 100644 (file)
@@ -25,8 +25,8 @@
  * @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");
@@ -37,7 +37,32 @@ ExtractELoss(const char* fname="forward_eloss.root",
     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) { 
@@ -63,6 +88,51 @@ ExtractELoss(const char* fname="forward_eloss.root",
   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");
+
 }
 
     
@@ -91,7 +161,7 @@ ExtractELoss(const char* fname="energyFits.root",
   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);
 }
 
 //____________________________________________________________________
index da02aefe3f89688c05ff06369e858f5fc156cc67..0200325c2024d1e0ffe0eda536e299957084816d 100644 (file)
@@ -67,6 +67,77 @@ ExtractMCCorr(const char* fname = "forward_mccorr.root",
   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();
 }
 
 //____________________________________________________________________
index 3df8c04db1ea88e1507c28d89bbef751dff72cb1..0103d17ad4b340c98ba4ffe32a2ff9eead398739 100644 (file)
@@ -37,9 +37,34 @@ ExtractSecMap(const char* fname,
     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);
 }
 
 //____________________________________________________________________
@@ -109,9 +134,45 @@ ExtractSPDSecMap(TFile* file, UShort_t sys, UShort_t sNN, Short_t 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);
+}
     
   
 //____________________________________________________________________