]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetTagger.C
Split: fix refs to AddTaskCentrality.C
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJetTagger.C
1 enum AlgoType {kKT, kANTIKT};
2 enum JetType  {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
3
4 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase, 
5                                                      const char * njetsTag, 
6                                                      const Double_t R,
7                                                      const char * nrhoBase, 
8                                                      const char * nrhoTag, 
9                                                      const char * ntracks, 
10                                                      const char * nclusters,
11                                                      const char *type,
12                                                      const char *CentEst,
13                                                      Int_t       pSel,
14                                                      TString     trigClass      = "",
15                                                      TString     kEmcalTriggers = "");
16
17 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(TString     kTracksName         = "PicoTracks", 
18                                                      TString     kClusName           = "caloClustersCorr",
19                                                      Double_t    R                   = 0.4, 
20                                                      Double_t    ptminTrack          = 0.15, 
21                                                      Double_t    etminClus           = 0.3, 
22                                                      Double_t    ptminTag            = 4.,
23                                                      Int_t       rhoType             = 1,
24                                                      const char *type                = "EMCAL",
25                                                      const char *CentEst             = "V0M",
26                                                      Int_t       pSel                = AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB,
27                                                      TString     trigClass           = "",
28                                                      TString     kEmcalTriggers      = "",
29                                                      TString     kPeriod             = "LHC11h",
30                                                      Int_t       recombScheme        = 0,
31                                                      TString     tag1                = "Jet",
32                                                      TString     tag2                = ""
33                                                      ) {
34   
35   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
36   if (!mgr)
37     {
38       Error("AddTaskEmcalJetTagger","No analysis manager found.");
39       return 0;
40     }
41
42   // Check the analysis type using the event handlers connected to the analysis manager.
43   //==============================================================================
44   if (!mgr->GetInputEventHandler())
45     {
46       ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
47       return NULL;
48     }
49
50   // #### Add necessary jet finder tasks
51   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
52
53   if(tag2.IsNull()) tag2=tag1;
54
55   AliEmcalJetTask* jetFinderTaskBase = 0x0;
56   if (strcmp(type,"TPC")==0)
57     jetFinderTaskBase = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag1.Data(),1.);
58   else if (strcmp(type,"EMCAL")==0)
59     jetFinderTaskBase = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,recombScheme,tag1.Data(),1.);
60   jetFinderTaskBase->SelectCollisionCandidates(AliVEvent::kAny);
61
62   AliEmcalJetTask* jetFinderTaskTag  = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTag, etminClus,0.005,recombScheme,tag2.Data(),1.);
63   jetFinderTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
64
65   if(tag1.EqualTo("JetPythia"))
66     jetFinderTaskBase->SelectConstituents(TObject::kBitMask, 0);
67   if(tag2.EqualTo("JetPythia"))
68     jetFinderTaskTag->SelectConstituents(TObject::kBitMask, 0);
69   
70   TString strJetsBase = jetFinderTaskBase->GetName();
71   TString strJetsTag  = jetFinderTaskTag->GetName();
72
73   AliAnalysisTaskRhoBase *rhoTaskBase;
74   AliAnalysisTaskRhoBase *rhoTaskTag;
75   TString rhoNameBase = "";
76   TString rhoNameTag  = "";
77   if(rhoType==1) {
78     rhoTaskBase = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus,recombScheme,tag1);
79     if(rhoTaskBase) {
80       rhoTaskBase->SetCentralityEstimator(CentEst);  
81       rhoTaskBase->SelectCollisionCandidates(AliVEvent::kAny);
82       if (strcmp(type,"TPC")==0)
83         rhoNameBase = rhoTaskBase->GetOutRhoName();    
84       if (strcmp(type,"EMCAL")==0)
85         rhoNameBase = rhoTaskBase->GetOutRhoScaledName();
86     }
87     if(rhoTaskTag) {
88       rhoTaskTag = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTag,0.,recombScheme,tag2);
89       rhoTaskTag->SetCentralityEstimator(CentEst); 
90       rhoTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
91       rhoNameTag  = rhoTaskTag->GetOutRhoName();
92     }
93   }
94
95   //Configure jet tagger task
96   AliAnalysisTaskEmcalJetTagger *task = AddTaskEmcalJetTagger(jetFinderTaskBase->GetName(),
97                                                               jetFinderTaskTag->GetName(),
98                                                               R,
99                                                               rhoNameBase,
100                                                               rhoNameTag,
101                                                               kTracksName.Data(),
102                                                               kClusName.Data(),
103                                                               type,
104                                                               CentEst,
105                                                               pSel,
106                                                               trigClass,
107                                                               kEmcalTriggers
108                                                               );
109   
110   return task;  
111
112 }
113
114 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase, 
115                                                      const char * njetsTag,
116                                                      const Double_t R,
117                                                      const char * nrhoBase, 
118                                                      const char * nrhoTag, 
119                                                      const char * ntracks, 
120                                                      const char * nclusters,
121                                                      const char * type,
122                                                      const char * CentEst,
123                                                      Int_t        pSel,
124                                                      TString      trigClass,
125                                                      TString      kEmcalTriggers
126                                                      ) {
127
128   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
129   if (!mgr)
130     {
131       Error("AddTaskEmcalJetTagger","No analysis manager found.");
132       return 0;
133     }
134
135   // Check the analysis type using the event handlers connected to the analysis manager.
136   //==============================================================================
137   if (!mgr->GetInputEventHandler())
138     {
139       ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
140       return NULL;
141     }
142
143   TString wagonName = Form("JetTagger_%s_%s_TC%s",njetsBase,njetsTag,trigClass.Data());
144
145   //Configure jet tagger task
146   AliAnalysisTaskEmcalJetTagger *task = new AliAnalysisTaskEmcalJetTagger(wagonName.Data());
147
148   task->SetNCentBins(4);
149   //task->SetVzRange(-10.,10.);
150
151   AliParticleContainer *trackCont  = task->AddParticleContainer(ntracks);
152   AliClusterContainer *clusterCont = task->AddClusterContainer(nclusters);
153
154   task->SetJetContainerBase(0);
155   task->SetJetContainerTag(1);
156
157   TString strType(type);
158   AliJetContainer *jetContBase = task->AddJetContainer(njetsBase,strType,R);
159   if(jetContBase) {
160     jetContBase->SetRhoName(nrhoBase);
161     jetContBase->ConnectParticleContainer(trackCont);
162     jetContBase->ConnectClusterContainer(clusterCont);
163     jetContBase->SetMaxTrackPt(10000.);
164   }
165
166   AliJetContainer *jetContTag = task->AddJetContainer(njetsTag,"TPC",R);
167   if(jetContTag) {
168     jetContTag->SetRhoName(nrhoTag);
169     jetContTag->ConnectParticleContainer(trackCont);
170     jetContTag->ConnectClusterContainer(clusterCont);
171     jetContTag->SetMaxTrackPt(10000.);
172   }
173   for(Int_t i=0; i<2; i++) {
174     task->SetPercAreaCut(0.6, i); //keep?
175   }
176   task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
177   task->SetCentralityEstimator(CentEst);
178   task->SelectCollisionCandidates(pSel);
179   task->SetUseAliAnaUtils(kFALSE);
180
181   mgr->AddTask(task);
182
183   //Connnect input
184   mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
185
186   //Connect output
187   TString contName(wagonName);
188   TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
189   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
190   mgr->ConnectOutput(task,1,coutput1);
191
192   return task;  
193 }
194
195 //Attach rho task
196 AliAnalysisTaskRhoBase *AttachRhoTaskTagger(TString     kPeriod             = "LHC13b",
197                                             TString     kTracksName         = "PicoTracks", 
198                                             TString     kClusName           = "caloClustersCorr",
199                                             Double_t    R                   = 0.4, 
200                                             Double_t    ptminTrack          = 0.15, 
201                                             Double_t    etminClus           = 0.3,
202                                             Int_t       recombScheme        = 0,
203                                             TString     tag                 = "Jet"
204                                             ) {
205   
206   AliAnalysisTaskRhoBase *rhoTaskBase;
207
208   kPeriod.ToLower();
209
210   // Add kt jet finder and rho task in case we want background subtraction
211   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");  
212   AliEmcalJetTask *jetFinderKt;
213   AliEmcalJetTask *jetFinderAKt;
214   jetFinderAKt  = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data(),1.);
215   jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
216   if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) {
217     jetFinderKt   = AddTaskEmcalJet(kTracksName, "", kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data(),0.);
218
219     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");  
220     TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb
221     AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
222                                jetFinderKt->GetName(),
223                                jetFinderAKt->GetName(),
224                                kTracksName,
225                                kClusName,
226                                Form("RhoSparseR%03d",(int)(100*R)),
227                                R,
228                                "TPC",
229                                0.01,
230                                0.15,
231                                0,
232                                fScale,
233                                0,
234                                kTRUE,
235                                Form("RhoSparseR%03d",(int)(100*R)),
236                                kTRUE
237                                );
238     rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
239     rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
240   }
241   else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) {
242     jetFinderKt   = AddTaskEmcalJet(kTracksName, "", kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data(),0.1);
243
244     gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
245     TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
246     sfunc->SetParameter(2,1.76458);
247     sfunc->SetParameter(1,-0.0111656);
248     sfunc->SetParameter(0,0.000107296);
249     TString rhoname = Form("%sRhoR%03dptmin%3.0f%s",tag.Data(),(int)(100*R),ptminTrack*1000.0,kTracksName.Data());
250     Printf("rhoname: %s",rhoname.Data());
251     AliAnalysisTaskRho *rhoTask = AddTaskRho(
252                                              jetFinderKt->GetName(), 
253                                              kTracksName, 
254                                              kClusName, 
255                                              rhoname, 
256                                              R, 
257                                              "TPC", 
258                                              0.01, 
259                                              0, 
260                                              sfunc, 
261                                              2, 
262                                              kTRUE);
263     rhoTask->SetHistoBins(100,0,250);
264
265     rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;
266   }
267   jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
268   if(tag.EqualTo("JetPythia")) {
269     jetFinderKt->SelectConstituents(TObject::kBitMask, 0);
270     jetFinderAKt->SelectConstituents(TObject::kBitMask, 0);
271   }
272
273
274   return rhoTaskBase;
275 }