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(),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);
62 AliEmcalJetTask* jetFinderTaskTag = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTag, etminClus,0.005,recombScheme,tag2.Data(),1.);
63 jetFinderTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
65 if(tag1.EqualTo("JetPythia"))
66 jetFinderTaskBase->SelectConstituents(TObject::kBitMask, 0);
67 if(tag2.EqualTo("JetPythia"))
68 jetFinderTaskTag->SelectConstituents(TObject::kBitMask, 0);
70 TString strJetsBase = jetFinderTaskBase->GetName();
71 TString strJetsTag = jetFinderTaskTag->GetName();
73 AliAnalysisTaskRhoBase *rhoTaskBase;
74 AliAnalysisTaskRhoBase *rhoTaskTag;
75 TString rhoNameBase = "";
76 TString rhoNameTag = "";
78 rhoTaskBase = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus,recombScheme,tag1);
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();
88 rhoTaskTag = AttachRhoTaskTagger(kPeriod,kTracksName,kClusName,R,ptminTag,0.,recombScheme,tag2);
89 rhoTaskTag->SetCentralityEstimator(CentEst);
90 rhoTaskTag->SelectCollisionCandidates(AliVEvent::kAny);
91 rhoNameTag = rhoTaskTag->GetOutRhoName();
95 //Configure jet tagger task
96 AliAnalysisTaskEmcalJetTagger *task = AddTaskEmcalJetTagger(jetFinderTaskBase->GetName(),
97 jetFinderTaskTag->GetName(),
114 AliAnalysisTaskEmcalJetTagger* AddTaskEmcalJetTagger(const char * njetsBase,
115 const char * njetsTag,
117 const char * nrhoBase,
118 const char * nrhoTag,
119 const char * ntracks,
120 const char * nclusters,
122 const char * CentEst,
125 TString kEmcalTriggers
128 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
131 Error("AddTaskEmcalJetTagger","No analysis manager found.");
135 // Check the analysis type using the event handlers connected to the analysis manager.
136 //==============================================================================
137 if (!mgr->GetInputEventHandler())
139 ::Error("AddTaskEmcalJetTagger", "This task requires an input event handler");
143 TString wagonName = Form("JetTagger_%s_%s_TC%s",njetsBase,njetsTag,trigClass.Data());
145 //Configure jet tagger task
146 AliAnalysisTaskEmcalJetTagger *task = new AliAnalysisTaskEmcalJetTagger(wagonName.Data());
148 task->SetNCentBins(4);
149 //task->SetVzRange(-10.,10.);
151 AliParticleContainer *trackCont = task->AddParticleContainer(ntracks);
152 AliClusterContainer *clusterCont = task->AddClusterContainer(nclusters);
154 task->SetJetContainerBase(0);
155 task->SetJetContainerTag(1);
157 TString strType(type);
158 AliJetContainer *jetContBase = task->AddJetContainer(njetsBase,strType,R);
160 jetContBase->SetRhoName(nrhoBase);
161 jetContBase->ConnectParticleContainer(trackCont);
162 jetContBase->ConnectClusterContainer(clusterCont);
163 jetContBase->SetMaxTrackPt(10000.);
166 AliJetContainer *jetContTag = task->AddJetContainer(njetsTag,"TPC",R);
168 jetContTag->SetRhoName(nrhoTag);
169 jetContTag->ConnectParticleContainer(trackCont);
170 jetContTag->ConnectClusterContainer(clusterCont);
171 jetContTag->SetMaxTrackPt(10000.);
173 for(Int_t i=0; i<2; i++) {
174 task->SetPercAreaCut(0.6, i); //keep?
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 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.);
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(),
226 Form("RhoSparseR%03d",(int)(100*R)),
235 Form("RhoSparseR%03d",(int)(100*R)),
238 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
239 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
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);
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(),
263 rhoTask->SetHistoBins(100,0,250);
265 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;
267 jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
268 if(tag.EqualTo("JetPythia")) {
269 jetFinderKt->SelectConstituents(TObject::kBitMask, 0);
270 jetFinderAKt->SelectConstituents(TObject::kBitMask, 0);