1 enum AlgoType {kKT, kANTIKT};
2 enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
4 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase,
10 const char * nclusters,
14 TString trigClass = "",
15 TString kEmcalTriggers = "");
17 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(TString kTracksName = "PicoTracks",
18 TString kClusName = "caloClustersCorr",
20 Double_t ptminTrack = 0.15,
21 Double_t etminClus = 0.3,
22 Double_t ptminTag = 4.,
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,
35 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
38 Error("AddTaskEmcalJetTagger","No analysis manager found.");
42 // Check the analysis type using the event handlers connected to the analysis manager.
43 //==============================================================================
44 if (!mgr->GetInputEventHandler())
46 ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
50 // #### Add necessary jet finder tasks
51 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
53 if(tag2.IsNull()) tag2=tag1;
55 AliEmcalJetTask* jetFinderTaskBase = 0x0;
56 if (strcmp(type,"TPC")==0)
57 jetFinderTaskBase = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag1.Data());
58 else if (strcmp(type,"EMCAL")==0)
59 jetFinderTaskBase = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,recombScheme,tag1.Data());
60 jetFinderTaskBase->SelectCollisionCandidates(AliVEvent::kAny);
61 jetFinderTaskBase->SetMinJetPt(0.);
63 AliEmcalJetTask* jetFinderTaskTag = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTag, etminClus,0.005,recombScheme,tag2.Data());
64 jetFinderTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
65 jetFinderTaskTag->SetMinJetPt(0.);
67 if(tag1.EqualTo("JetPythia"))
68 jetFinderTaskBase->SelectConstituents(TObject::kBitMask, 0);
69 if(tag2.EqualTo("JetPythia"))
70 jetFinderTaskTag->SelectConstituents(TObject::kBitMask, 0);
72 TString strJetsBase = jetFinderTaskBase->GetName();
73 TString strJetsTag = jetFinderTaskTag->GetName();
75 AliAnalysisTaskRhoBase *rhoTaskBase;
76 AliAnalysisTaskRhoBase *rhoTaskTag;
77 TString rhoNameBase = "";
78 TString rhoNameTag = "";
80 rhoTaskBase = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus,recombScheme,tag1);
82 rhoTaskBase->SetCentralityEstimator(CentEst);
83 rhoTaskBase->SelectCollisionCandidates(AliVEvent::kAny);
84 if (strcmp(type,"TPC")==0)
85 rhoNameBase = rhoTaskBase->GetOutRhoName();
86 if (strcmp(type,"EMCAL")==0)
87 rhoNameBase = rhoTaskBase->GetOutRhoScaledName();
90 rhoTaskTag = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTag,0.,recombScheme,tag2);
91 rhoTaskTag->SetCentralityEstimator(CentEst);
92 rhoTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
93 rhoNameTag = rhoTaskTag->GetOutRhoName();
97 //Configure jet tagger task
98 AliAnalysisTaskEmcalJetTagger *task = AddTaskEmcalJetTagger(jetFinderTaskBase->GetName(),
99 jetFinderTaskTag->GetName(),
116 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase,
117 const char * njetsTag,
119 const char * nrhoBase,
120 const char * nrhoTag,
121 const char * ntracks,
122 const char * nclusters,
124 const char * CentEst,
127 TString kEmcalTriggers
130 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
133 Error("AddTaskEmcalJetTagger","No analysis manager found.");
137 // Check the analysis type using the event handlers connected to the analysis manager.
138 //==============================================================================
139 if (!mgr->GetInputEventHandler())
141 ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
145 TString wagonName = Form("JetTagger_%s_%s_TC%s",njetsBase,njetsTag,trigClass.Data());
147 //Configure jet tagger task
148 AliAnalysisTaskEmcalJetTagger *task = new AliAnalysisTaskEmcalJetTagger(wagonName.Data());
150 task->SetNCentBins(4);
151 //task->SetVzRange(-10.,10.);
153 AliParticleContainer *trackCont = task->AddParticleContainer(ntracks);
154 AliClusterContainer *clusterCont = task->AddClusterContainer(nclusters);
156 task->SetJetContainerBase(0);
157 task->SetJetContainerTag(1);
159 TString strType(type);
160 AliJetContainer *jetContBase = task->AddJetContainer(njetsBase,strType,R);
162 jetContBase->SetRhoName(nrhoBase);
163 jetContBase->ConnectParticleContainer(trackCont);
164 jetContBase->ConnectClusterContainer(clusterCont);
167 AliJetContainer *jetContTag = task->AddJetContainer(njetsTag,"TPC",R);
169 jetContTag->SetRhoName(nrhoTag);
170 jetContTag->ConnectParticleContainer(trackCont);
171 jetContTag->ConnectClusterContainer(clusterCont);
173 for(Int_t i=0; i<2; i++) {
174 task->SetPercAreaCut(0.6, i);
176 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
177 task->SetCentralityEstimator(CentEst);
178 task->SelectCollisionCandidates(pSel);
179 task->SetUseAliAnaUtils(kFALSE);
184 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
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);
196 AliAnalysisTaskRhoBase *AttachRhoTaskTagger(TString kPeriod = "LHC13b",
197 TString kTracksName = "PicoTracks",
198 TString kClusName = "caloClustersCorr",
200 Double_t ptminTrack = 0.15,
201 Double_t etminClus = 0.3,
202 Int_t recombScheme = 0,
206 AliAnalysisTaskRhoBase *rhoTaskBase;
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 jetFinderKt = AddTaskEmcalJet(kTracksName, "", kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data());
215 jetFinderAKt = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,recombScheme,tag.Data());
216 jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
217 jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
218 jetFinderKt->SetMinJetPt(0.);
219 jetFinderAKt->SetMinJetPt(0.);
221 if(tag.EqualTo("JetPythia")) {
222 jetFinderKt->SelectConstituents(TObject::kBitMask, 0);
223 jetFinderAKt->SelectConstituents(TObject::kBitMask, 0);
226 if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) {
228 jetFinderKt->SetMinJetPt(0.);
230 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
231 TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb
232 AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
233 jetFinderKt->GetName(),
234 jetFinderAKt->GetName(),
237 Form("RhoSparseR%03d",(int)(100*R)),
246 Form("RhoSparseR%03d",(int)(100*R)),
249 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
250 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
252 else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) {
254 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
256 TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
257 sfunc->SetParameter(2,1.76458);
258 sfunc->SetParameter(1,-0.0111656);
259 sfunc->SetParameter(0,0.000107296);
260 TString rhoname = Form("%sRhoR%03dptmin%3.0f%s",tag.Data(),(int)(100*R),ptminTrack*1000.0,kTracksName.Data());
261 Printf("rhoname: %s",rhoname.Data());
262 AliAnalysisTaskRho *rhoTask = AddTaskRho(
263 jetFinderKt->GetName(),
274 rhoTask->SetHistoBins(100,0,250);
276 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;