]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/macros/AddTaskRho.C
Split: fix refs to AddTaskCentrality.C
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskRho.C
index a296e06022c6b565f35af2c9940c62c946767258..dadebbe37418a374b1be5ba55ba2768788481b58 100644 (file)
@@ -1,12 +1,10 @@
-// $Id$
-
-AliAnalysisTaskRho* AddTaskRho(
+AliAnalysisTaskRho* AddTaskRho (
    const char    *nJets       = "Jets",
    const char    *nTracks     = "PicoTracks",
    const char    *nClusters   = "CaloClusters",  
    const char    *nRho        = "Rho",
    Double_t       jetradius   = 0.2,
-   UInt_t         type        = AliAnalysisTaskEmcal::kTPC,
+   const char    *cutType     = "TPC",
    Double_t       jetareacut  = 0.01,
    Double_t       emcareacut  = 0,
    TF1           *sfunc       = 0,
@@ -31,30 +29,32 @@ AliAnalysisTaskRho* AddTaskRho(
     ::Error("AddTaskRho", "This task requires an input event handler");
     return NULL;
   }
-  
+
+
   //-------------------------------------------------------
   // Init the task and do settings
   //-------------------------------------------------------
 
-  TString name(Form("%s_%s_", taskname, nJets));
-  if (type == AliAnalysisTaskEmcal::kTPC) 
-    name += "TPC";
-  else if (type == AliAnalysisTaskEmcal::kEMCAL) 
-    name += "EMCAL";
-  else if (type == AliAnalysisTaskEmcal::kUser) 
-    name += "USER";
+  TString name(Form("%s_%s_%s", taskname, nJets,cutType));
+  AliAnalysisTaskRho* mgrTask = mgr->GetTask(name.Data());
+  if (mgrTask) return mgrTask;
+
   AliAnalysisTaskRho *rhotask = new AliAnalysisTaskRho(name, histo);
-  rhotask->SetAnaType(type);
-  rhotask->SetScaleFunction(sfunc);
-  rhotask->SetJetsName(nJets);
-  rhotask->SetTracksName(nTracks);
-  rhotask->SetClusName(nClusters);
-  rhotask->SetRhoName(nRho);
-  rhotask->SetJetAreaCut(jetareacut);
-  rhotask->SetAreaEmcCut(emcareacut);
-  rhotask->SetJetPtCut(0);
-  rhotask->SetJetRadius(jetradius);
   rhotask->SetExcludeLeadJets(exclJets);
+  rhotask->SetScaleFunction(sfunc);
+  rhotask->SetOutRhoName(nRho);
+
+  AliParticleContainer *trackCont = rhotask->AddParticleContainer(nTracks);
+  AliClusterContainer *clusterCont = rhotask->AddClusterContainer(nClusters);
+
+  AliJetContainer *jetCont = rhotask->AddJetContainer(nJets,cutType,jetradius);
+  if (jetCont) {
+    jetCont->SetJetAreaCut(jetareacut);
+    jetCont->SetAreaEmcCut(emcareacut);
+    jetCont->SetJetPtCut(0);
+    jetCont->ConnectParticleContainer(trackCont);
+    jetCont->ConnectClusterContainer(clusterCont);
+  }
 
   //-------------------------------------------------------
   // Final settings, pass to manager and set the containers
@@ -75,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;
+}