]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskDijetHadron.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskDijetHadron.C
1 // $Id$
2
3 AliAnalysisTaskDijetHadron* AddTaskDijetHadron(
4   const char *ntracks            = "Tracks",
5   const char *nclusters          = "CaloClusters",
6   const char *njets              = "Jets",
7   const char *nMCtracks          = "TracksMC",
8   const char *nMCclusters        = "CaloClustersMC",
9   const char *nMCjets            = "JetsMC",
10   const char *nembtracks         = "TracksEmbedded",
11   const char *nembclusters       = "CaloClustersEmbedded",
12   const char *nembjets           = "EmbJets",
13   const char *nrandtracks        = "TracksRandomized",
14   const char *nrandclusters      = "CaloClustersRandomized",
15   const char *nPbPbrho           = "Rho",
16   const char *nMCrho             = "RhoMC",
17   const char *nEMBrho            = "RhoEMB",
18   Double_t    jetradius          = 0.2,
19   Double_t    leadinghadron1     = 0.0,
20   Double_t    leadinghadron2     = 3.0,
21   Double_t    leadinghadron3     = 5.0,
22   Double_t    jet1pt1            = 10.0,
23   Double_t    jet1pt2            = 20.0,
24   Double_t    jet1pt3            = 30.0,
25   Double_t    jet2pt1            = 10.0,
26   Double_t    jet2pt2            = 20.0,
27   Double_t    jet2pt3            = 30.0,
28   Double_t    jetareacut         = 0.557,
29   Double_t    trackptcut         = 0.15,
30   Double_t    clusptcut          = 0.30,
31   const char *type               = "TPC",
32   const char *taskname           = "AliAnalysisTaskDijetHadron"
33 )
34 {  
35   // Get the pointer to the existing analysis manager via the static access method.
36   //==============================================================================
37   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
38   if (!mgr)
39   {
40     ::Error("AddTaskDijetHadron", "No analysis manager to connect to.");
41     return NULL;
42   }  
43   
44   // Check the analysis type using the event handlers connected to the analysis manager.
45   //==============================================================================
46   if (!mgr->GetInputEventHandler())
47   {
48     ::Error("AddTaskDijetHadron", "This task requires an input event handler");
49     return NULL;
50   }
51   
52   //-------------------------------------------------------
53   // Init the task and do settings
54   //-------------------------------------------------------
55   TString name;
56   if (strcmp(ntracks, "") == 0 && strcmp(nclusters, "") == 0) 
57     name = Form("%s_%s_R0%d_%s",taskname,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
58   else if (strcmp(ntracks, "") == 0) 
59     name = Form("%s_%s_%s_R0%d_%s",taskname,nclusters,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
60   else if (strcmp(nclusters, "") == 0) 
61     name = Form("%s_%s_%s_R0%d_%s",taskname,ntracks,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
62   else
63     name = Form("%s_%s_%s_%s_R0%d_%s",taskname,ntracks,nclusters,nPbPbrho,(Int_t)floor(jetradius*100+0.5),type);
64
65   AliAnalysisTaskDijetHadron* jetTask = new AliAnalysisTaskDijetHadron(name);
66   jetTask->SetConeRadius(jetradius);
67   jetTask->SetLeadingHadronPtThreshold1(leadinghadron1);
68   jetTask->SetLeadingHadronPtThreshold2(leadinghadron2);
69   jetTask->SetLeadingHadronPtThreshold3(leadinghadron3);
70   jetTask->SetJet1PtThreshold1(jet1pt1);
71   jetTask->SetJet1PtThreshold2(jet1pt2);
72   jetTask->SetJet1PtThreshold3(jet1pt3);
73   jetTask->SetJet2PtThreshold1(jet2pt1);
74   jetTask->SetJet2PtThreshold2(jet2pt2);
75   jetTask->SetJet2PtThreshold3(jet2pt3);
76   jetTask->SetRhoName(nPbPbrho,-1);
77   if (strcmp(type,"TPC")==0) 
78     jetTask->SetConeEtaPhiTPC();
79   else if (strcmp(type,"EMCAL")==0) 
80     jetTask->SetConeEtaPhiEMCAL();
81
82   AliParticleContainer *partCont = jetTask->AddParticleContainer(ntracks);
83   if (partCont) {
84     partCont->SetName("Tracks");
85     partCont->SetParticlePtCut(trackptcut);
86   }
87
88   AliClusterContainer *clusCont = jetTask->AddClusterContainer(nclusters);
89   if (clusCont) {
90     clusCont->SetName("CaloClusters");
91     clusCont->SetClusPtCut(clusptcut);
92   }
93
94   AliJetContainer *jetCont = jetTask->AddJetContainer(njets,type,jetradius);
95   if (jetCont) {
96     jetCont->SetName("Jets");
97     jetCont->SetPercAreaCut(jetareacut);
98     jetCont->SetRhoName(nPbPbrho);
99     jetCont->ConnectParticleContainer(partCont);
100     jetCont->ConnectClusterContainer(clusCont);
101   }
102
103   AliParticleContainer *MCpartCont = jetTask->AddParticleContainer(nMCtracks);
104   if (partCont) {
105     MCpartCont->SetName("MCTracks");
106     MCpartCont->SetParticlePtCut(trackptcut);
107   }
108
109   AliClusterContainer *MCclusCont = jetTask->AddClusterContainer(nMCclusters);
110   if (clusCont) {
111     MCclusCont->SetName("MCCaloClusters");
112     MCclusCont->SetClusPtCut(clusptcut);
113   }
114
115   AliJetContainer *MCjetCont = jetTask->AddJetContainer(nMCjets,type,jetradius);
116   if (jetCont) {
117     MCjetCont->SetName("MCJets");
118     MCjetCont->SetPercAreaCut(jetareacut);
119     MCjetCont->SetRhoName(nMCrho);
120     MCjetCont->ConnectParticleContainer(MCpartCont);
121     MCjetCont->ConnectClusterContainer(MCclusCont);
122   }
123
124   AliParticleContainer *embPartCont = jetTask->AddParticleContainer(nembtracks);
125   if (embPartCont) {
126     embPartCont->SetName("EmbTracks");
127     embPartCont->SetParticlePtCut(trackptcut);
128   }
129
130   AliClusterContainer *embClusCont = jetTask->AddClusterContainer(nembclusters);
131   if (embClusCont) {
132     embClusCont->SetName("EmbClusters");
133     embClusCont->SetClusPtCut(clusptcut);
134   }
135
136   AliJetContainer *embJetCont = jetTask->AddJetContainer(nembjets,type,jetradius);
137   if (embJetCont) {
138     embJetCont->SetName("EmbJets");
139     embJetCont->SetPercAreaCut(jetareacut);
140     embJetCont->SetRhoName(nEMBrho);
141     embJetCont->ConnectParticleContainer(embPartCont);
142     embJetCont->ConnectClusterContainer(embClusCont);
143   }
144
145   //-------------------------------------------------------
146   // Final settings, pass to manager and set the containers
147   //-------------------------------------------------------
148   
149   mgr->AddTask(jetTask);
150   
151   // Create containers for input/output
152   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
153   TString contname(name);
154   contname += "_histos";
155   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
156                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
157                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
158   mgr->ConnectInput(jetTask, 0, cinput1);
159   mgr->ConnectOutput(jetTask, 1, coutput1);
160   
161   return jetTask;
162 }