-// $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,
::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
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;
+}