Read scale factor functions from a root file
authorsaiola <salvatore.aiola@cern.ch>
Fri, 14 Nov 2014 22:11:31 +0000 (17:11 -0500)
committersaiola <salvatore.aiola@cern.ch>
Fri, 14 Nov 2014 22:11:31 +0000 (17:11 -0500)
PWGJE/EMCALJetTasks/macros/AddTaskRho.C
PWGJE/EMCALJetTasks/macros/AddTaskScale.C

index 8b471ee..dadebbe 100644 (file)
@@ -1,6 +1,4 @@
-// $Id$
-
-AliAnalysisTaskRho* AddTaskRho(
+AliAnalysisTaskRho* AddTaskRho (
    const char    *nJets       = "Jets",
    const char    *nTracks     = "PicoTracks",
    const char    *nClusters   = "CaloClusters",  
@@ -77,3 +75,44 @@ AliAnalysisTaskRho* AddTaskRho(
 
   return rhotask;
 }
+
+AliAnalysisTaskRho* AddTaskRho(
+   const char    *nJets       = "Jets",
+   const char    *nTracks     = "PicoTracks",
+   const char    *nClusters   = "CaloClusters",  
+   const char    *nRho        = "Rho",
+   Double_t       jetradius   = 0.2,
+   const char    *cutType     = "TPC",
+   Double_t       jetareacut  = 0.01,
+   Double_t       emcareacut  = 0,
+   const char    *sfuncPath   = "alien:///alice/cern.ch/user/s/saiola/LHC11h_ScaleFactorFunctions.root",
+   const char    *sfuncName   = "LHC11h_HadCorr20_ClustersV2",
+   const UInt_t   exclJets    = 2,
+   const Bool_t   histo       = kFALSE,
+   const char    *taskname    = "Rho"
+)
+{
+  TFile *file = TFile::Open(sfuncPath);
+  if (!file || file->IsZombie()) {
+    ::Error("AddTaskRho", "Could not open scale function file");
+    return NULL;
+  }
+
+  TF1* sfunc = dynamic_cast<TF1*>(file->Get(sfuncName));
+
+  if (sfunc) {
+    ::Info("AddTaskRho", Form("Scale function %s loaded from file %s.", sfuncName, sfuncPath));
+  }
+  else {
+    ::Error("AddTaskRho", Form("Scale function %s not found in file %s.", sfuncName, sfuncPath));
+    return NULL;
+  }
+
+  AliAnalysisTaskRho *task = AddTaskRho(nJets, nTracks, nClusters, nRho, jetradius, cutType, jetareacut, emcareacut, sfunc, exclJets, histo, taskname);
+
+  file->Close();
+  delete file;
+  file = 0;
+
+  return task;
+}
index 3e43dcd..6dc9077 100644 (file)
@@ -1,12 +1,11 @@
-// $Id$
-
 AliAnalysisTaskScale* AddTaskScale(
   const char *nTracks        = "Tracks",
   const char *nClusters      = "CaloClustersCorr",
   Double_t    trackptcut     = 0.150,
   Double_t    clusptcut      = 0.150,
   const char *taskname       = "Scale",
-  const char *outfilename    = "AnalysisResults.root"
+  const char *sfuncPath      = 0,
+  const char *sfuncName      = 0
 )
 {  
   // Get the pointer to the existing analysis manager via the static access method.
@@ -40,6 +39,28 @@ AliAnalysisTaskScale* AddTaskScale(
   AliClusterContainer  *ccont = scaletask->AddClusterContainer(nClusters);
   if(ccont) ccont->SetClusPtCut(clusptcut);
 
+  if (sfuncPath != 0 && sfuncName != 0) {
+    TFile *file = TFile::Open(sfuncPath);
+    if (file && !file->IsZombie()) {
+      TF1* sfunc = dynamic_cast<TF1*>(file->Get(sfuncName));
+
+      if (sfunc) {
+        scaletask->SetScaleFunction(sfunc);
+        ::Info("AddTaskScale", Form("Scale function %s loaded from file %s.", sfuncName, sfuncPath));
+      }
+      else {
+        ::Error("AddTaskScale", Form("Scale function %s not found in file %s.", sfuncName, sfuncPath));
+      }
+      
+      file->Close();
+      delete file;
+      file = 0;
+    }
+    else {
+      ::Warning("AddTaskScale", "Could not open scale function file");
+    }
+  }
+
   //-------------------------------------------------------
   // Final settings, pass to manager and set the containers
   //-------------------------------------------------------
@@ -53,7 +74,7 @@ AliAnalysisTaskScale* AddTaskScale(
   AliAnalysisDataContainer *coscale = mgr->CreateContainer(contname,
                                                            TList::Class(),
                                                            AliAnalysisManager::kOutputContainer,
-                                                           outfilename);
+                                                           Form("%s", AliAnalysisManager::GetCommonFileName()));
   mgr->ConnectOutput(scaletask,1,coscale);
 
   return scaletask;