]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C
improved efficiency by caching leading jet per event, changed cuts on leading jet...
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskRhoSparse.C
1 // $Id$
2
3 AliAnalysisTaskRhoSparse* AddTaskRhoSparse(
4                                            const char    *nJetsBkg    = "JetsBkg",
5                                            const char    *nJetsSig    = "JetsSig",
6                                            const char    *nTracks     = "PicoTracks",
7                                            const char    *nClusters   = "CaloClusters",  
8                                            const char    *nRho        = "Rho",
9                                            Double_t       jetradius   = 0.2,
10                                            const char    *cutType     = "TPC",
11                                            Double_t       jetareacut  = 0.01,
12                                            Double_t       jetptcut    = 0.0,
13                                            Double_t       emcareacut  = 0,
14                                            TF1           *sfunc       = 0x0,
15                                            const UInt_t   exclJets    = 2,
16                                            const Bool_t   histo       = kFALSE,
17                                            const char    *taskname    = "Rho",
18                                            const Bool_t   fRhoCMS      = kTRUE
19                                            )
20 {  
21
22   // Get the pointer to the existing analysis manager via the static access method.
23   //==============================================================================
24   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
25   if (!mgr)
26   {
27     ::Error("AddTaskRhoSparse", "No analysis manager to connect to.");
28     return NULL;
29   }  
30   
31   // Check the analysis type using the event handlers connected to the analysis manager.
32   //==============================================================================
33   if (!mgr->GetInputEventHandler())
34   {
35     ::Error("AddTaskRhoSparse", "This task requires an input event handler");
36     return NULL;
37   }
38   
39   //-------------------------------------------------------
40   // Init the task and do settings
41   //-------------------------------------------------------
42
43   TString name(Form("%s_%s_%s", taskname, nJetsBkg,cutType));
44   AliAnalysisTaskRhoSparse* mgrTask = mgr->GetTask(name.Data());
45   if (mgrTask) return mgrTask;
46
47   AliAnalysisTaskRhoSparse *rhotask = new AliAnalysisTaskRhoSparse(name, histo);
48   rhotask->SetHistoBins(1000,-0.1,9.9);
49   rhotask->SetRhoCMS(fRhoCMS);
50   rhotask->SetExcludeLeadJets(exclJets);
51   rhotask->SetScaleFunction(sfunc);
52   rhotask->SetOutRhoName(nRho);
53
54   AliParticleContainer *trackCont = rhotask->AddParticleContainer(nTracks);
55   AliClusterContainer *clusterCont = rhotask->AddClusterContainer(nClusters);
56
57   AliJetContainer *bkgJetCont = rhotask->AddJetContainer(nJetsBkg,cutType,jetradius);
58   if (bkgJetCont) {
59     bkgJetCont->SetJetAreaCut(jetareacut);
60     bkgJetCont->SetAreaEmcCut(emcareacut);
61     bkgJetCont->SetJetPtCut(0.);
62     bkgJetCont->ConnectParticleContainer(trackCont);
63     bkgJetCont->ConnectClusterContainer(clusterCont);
64   }
65
66   AliJetContainer *sigJetCont = rhotask->AddJetContainer(nJetsSig,cutType,jetradius);
67   if (sigJetCont) {
68     sigJetCont->SetJetAreaCut(jetareacut);
69     sigJetCont->SetAreaEmcCut(emcareacut);
70     sigJetCont->SetJetPtCut(jetptcut);
71     sigJetCont->ConnectParticleContainer(trackCont);
72     sigJetCont->ConnectClusterContainer(clusterCont);
73   }
74
75   //-------------------------------------------------------
76   // Final settings, pass to manager and set the containers
77   //-------------------------------------------------------
78
79   mgr->AddTask(rhotask);
80
81   // Create containers for input/output
82   mgr->ConnectInput(rhotask, 0, mgr->GetCommonInputContainer());
83   if (histo) {
84     TString contname(name);
85     contname += "_histos";
86     AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
87                                                               TList::Class(),AliAnalysisManager::kOutputContainer,
88                                                               Form("%s", AliAnalysisManager::GetCommonFileName()));
89     mgr->ConnectOutput(rhotask, 1, coutput1);
90   }
91
92   return rhotask;
93 }