]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskRhoBase.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskRhoBase.C
1 // $Id$
2
3 AliAnalysisTaskRhoBase* AddTaskRhoBase(
4    const char    *nJets       = "Jets",
5    const char    *nTracks     = "PicoTracks",
6    const char    *nClusters   = "CaloClusters",  
7    const char    *nRho        = "Rho",
8    Double_t       jetradius   = 0.2,
9    const char    *cutType     = "TPC",
10    Double_t       jetareacut  = 0.01,
11    Double_t       emcareacut  = 0,
12    TF1           *sfunc       = 0,
13    TF1           *rfunc       = 0,
14    const Bool_t   histo       = kFALSE,
15    const char    *taskname    = "RhoBase"
16
17 )
18 {  
19   // Get the pointer to the existing analysis manager via the static access method.
20   //==============================================================================
21   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22   if (!mgr)
23   {
24     ::Error("AddTaskRhoBase", "No analysis manager to connect to.");
25     return NULL;
26   }  
27   
28   // Check the analysis type using the event handlers connected to the analysis manager.
29   //==============================================================================
30   if (!mgr->GetInputEventHandler())
31   {
32     ::Error("AddTaskRho", "This task requires an input event handler");
33     return NULL;
34   }
35   
36   //-------------------------------------------------------
37   // Init the task and do settings
38   //-------------------------------------------------------
39
40   AliAnalysisTaskRhoBase *rhotask = new AliAnalysisTaskRhoBase(taskname,histo);
41   rhotask->SetRhoFunction(rfunc);
42   rhotask->SetScaleFunction(sfunc);
43   rhotask->SetOutRhoName(nRho);
44
45   AliParticleContainer *trackCont = rhotask->AddParticleContainer(nTracks);
46   AliClusterContainer *clusterCont = rhotask->AddClusterContainer(nClusters);
47
48   AliJetContainer *jetCont = rhotask->AddJetContainer(nJets,cutType,jetradius);
49   if (jetCont) {
50     jetCont->SetJetAreaCut(jetareacut);
51     jetCont->SetAreaEmcCut(emcareacut);
52     jetCont->SetJetPtCut(0);
53     jetCont->ConnectParticleContainer(trackCont);
54     jetCont->ConnectClusterContainer(clusterCont);
55   }
56
57   //-------------------------------------------------------
58   // Final settings, pass to manager and set the containers
59   //-------------------------------------------------------
60
61   mgr->AddTask(rhotask);
62
63   // Create containers for input/output
64   mgr->ConnectInput(rhotask, 0, mgr->GetCommonInputContainer());
65
66   if (histo) {
67     TString contname(taskname);
68     contname += "_histos";
69     AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
70                                                               TList::Class(),AliAnalysisManager::kOutputContainer,
71                                                               Form("%s", AliAnalysisManager::GetCommonFileName()));
72     mgr->ConnectOutput(rhotask, 1, coutput1);
73   }
74
75   return rhotask;
76 }