]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskDeltaPt.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskDeltaPt.C
1 // $Id$
2
3 AliAnalysisTaskDeltaPt* AddTaskDeltaPt(
4   const char *ntracks            = "Tracks",
5   const char *nclusters          = "CaloClusters",
6   const char *njets              = "Jets",
7   const char *nembtracks         = "TracksEmbedded",
8   const char *nembclusters       = "CaloClustersEmbedded",
9   const char *nembjets           = "EmbJets",
10   const char *nrandtracks        = "TracksRandomized",
11   const char *nrandclusters      = "CaloClustersRandomized",
12   const char *nrho               = "Rho",
13   Double_t    jetradius          = 0.2,
14   Double_t    jetareacut         = 0.557,
15   Double_t    trackptcut         = 0.15,
16   Double_t    clusptcut          = 0.30,
17   const char *type               = "TPC",
18   const char *taskname           = "AliAnalysisTaskDeltaPt"
19 )
20 {  
21   // Get the pointer to the existing analysis manager via the static access method.
22   //==============================================================================
23   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
24   if (!mgr)
25   {
26     ::Error("AddTaskDeltaPt", "No analysis manager to connect to.");
27     return NULL;
28   }  
29   
30   // Check the analysis type using the event handlers connected to the analysis manager.
31   //==============================================================================
32   if (!mgr->GetInputEventHandler())
33   {
34     ::Error("AddTaskDeltaPt", "This task requires an input event handler");
35     return NULL;
36   }
37   
38   //-------------------------------------------------------
39   // Init the task and do settings
40   //-------------------------------------------------------
41   TString name;
42   if (strcmp(ntracks, "") == 0 && strcmp(nclusters, "") == 0) 
43     name = Form("%s_%s_R0%d_%s",taskname,nrho,(Int_t)floor(jetradius*100+0.5),type);
44   else if (strcmp(ntracks, "") == 0) 
45     name = Form("%s_%s_%s_R0%d_%s",taskname,nclusters,nrho,(Int_t)floor(jetradius*100+0.5),type);
46   else if (strcmp(nclusters, "") == 0) 
47     name = Form("%s_%s_%s_R0%d_%s",taskname,ntracks,nrho,(Int_t)floor(jetradius*100+0.5),type);
48   else
49     name = Form("%s_%s_%s_%s_R0%d_%s",taskname,ntracks,nclusters,nrho,(Int_t)floor(jetradius*100+0.5),type);
50
51   AliAnalysisTaskDeltaPt* jetTask = new AliAnalysisTaskDeltaPt(name);
52   jetTask->SetConeRadius(jetradius);
53   jetTask->SetRhoName(nrho,-1);
54   if (strcmp(type,"TPC")==0) 
55     jetTask->SetConeEtaPhiTPC();
56   else if (strcmp(type,"EMCAL")==0) 
57     jetTask->SetConeEtaPhiEMCAL();
58
59   AliParticleContainer *partCont = jetTask->AddParticleContainer(ntracks);
60   if (partCont) {
61     partCont->SetName("Tracks");
62     partCont->SetParticlePtCut(trackptcut);
63   }
64
65   AliClusterContainer *clusCont = jetTask->AddClusterContainer(nclusters);
66   if (clusCont) {
67     clusCont->SetName("CaloClusters");
68     clusCont->SetClusPtCut(clusptcut);
69   }
70
71   AliJetContainer *jetCont = jetTask->AddJetContainer(njets,type,jetradius);
72   if (jetCont) {
73     jetCont->SetName("Jets");
74     jetCont->SetPercAreaCut(jetareacut);
75     jetCont->SetRhoName(nrho);
76     jetCont->ConnectParticleContainer(partCont);
77     jetCont->ConnectClusterContainer(clusCont);
78   }
79
80   AliParticleContainer *embPartCont = jetTask->AddParticleContainer(nembtracks);
81   if (embPartCont) {
82     embPartCont->SetName("EmbTracks");
83     embPartCont->SetParticlePtCut(trackptcut);
84   }
85
86   AliClusterContainer *embClusCont = jetTask->AddClusterContainer(nembclusters);
87   if (embClusCont) {
88     embClusCont->SetName("EmbClusters");
89     embClusCont->SetClusPtCut(clusptcut);
90   }
91
92   AliJetContainer *embJetCont = jetTask->AddJetContainer(nembjets,type,jetradius);
93   if (embJetCont) {
94     embJetCont->SetName("EmbJets");
95     embJetCont->SetPercAreaCut(jetareacut);
96     embJetCont->SetRhoName(nrho);
97     embJetCont->ConnectParticleContainer(embPartCont);
98     embJetCont->ConnectClusterContainer(embClusCont);
99   }
100
101   AliParticleContainer *randPartCont = jetTask->AddParticleContainer(nrandtracks);
102   if (randPartCont) {
103     randPartCont->SetName("RandTracks");
104     randPartCont->SetParticlePtCut(trackptcut);
105   }
106
107   AliClusterContainer *randClusCont = jetTask->AddClusterContainer(nrandclusters);    
108   if (randClusCont) {
109     randClusCont->SetName("RandClusters");
110     randClusCont->SetClusPtCut(clusptcut);
111   }
112   
113   //-------------------------------------------------------
114   // Final settings, pass to manager and set the containers
115   //-------------------------------------------------------
116   
117   mgr->AddTask(jetTask);
118   
119   // Create containers for input/output
120   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
121   TString contname(name);
122   contname += "_histos";
123   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
124                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
125                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
126   mgr->ConnectInput(jetTask, 0, cinput1);
127   mgr->ConnectOutput(jetTask, 1, coutput1);
128   
129   return jetTask;
130 }