1 enum AlgoType {kKT, kANTIKT};
2 enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
4 AliAnalysisTaskEmcalJetMass* AddTaskEmcalJetMass(const char * njetsBase,
10 const char * nclusters,
14 TString trigClass = "",
15 TString kEmcalTriggers = "");
17 AliAnalysisTaskEmcalJetMass* AddTaskEmcalJetMass(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"
32 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
35 Error("AddTaskEmcalJetMass","No analysis manager found.");
39 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
41 // Check the analysis type using the event handlers connected to the analysis manager.
42 //==============================================================================
43 if (!mgr->GetInputEventHandler())
45 ::Error("AddTaskEmcalJetMass", "This task requires an input event handler");
49 // #### Add necessary jet finder tasks
50 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
52 AliEmcalJetTask* jetFinderTaskBase = 0x0;
53 if (strcmp(type,"TPC")==0)
54 jetFinderTaskBase = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,0);
55 else if (strcmp(type,"EMCAL")==0)
56 jetFinderTaskBase = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,0);
58 TString strJetsBase = jetFinderTaskBase->GetName();
60 AliAnalysisTaskRhoBase *rhoTaskBase;
61 TString rhoNameBase = "";
63 rhoTaskBase = AttachRhoTask(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus);
65 rhoTaskBase->SetCentralityEstimator(CentEst);
66 rhoTaskBase->SelectCollisionCandidates(AliVEvent::kAny);
67 if (strcmp(type,"TPC")==0)
68 rhoNameBase = rhoTaskBase->GetOutRhoName();
69 if (strcmp(type,"EMCAL")==0)
70 rhoNameBase = rhoTaskBase->GetOutRhoScaledName();
74 //Configure jet tagger task
75 AliAnalysisTaskEmcalJetMass *task = AddTaskEmcalJetMass(jetFinderTaskBase->GetName(),
91 AliAnalysisTaskEmcalJetMass* AddTaskEmcalJetMass(const char * njetsBase,
93 const char * nrhoBase,
95 const char * nclusters,
100 TString kEmcalTriggers
103 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
106 Error("AddTaskEmcalJetMass","No analysis manager found.");
110 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
112 // Check the analysis type using the event handlers connected to the analysis manager.
113 //==============================================================================
114 if (!mgr->GetInputEventHandler())
116 ::Error("AddTaskEmcalJetMass", "This task requires an input event handler");
120 TString wagonName = Form("JetMass_%s_TC%s",njetsBase,trigClass.Data());
122 //Configure jet tagger task
123 AliAnalysisTaskEmcalJetMass *task = new AliAnalysisTaskEmcalJetMass(wagonName.Data());
125 task->SetNCentBins(4);
126 //task->SetVzRange(-10.,10.);
128 AliParticleContainer *trackCont = task->AddParticleContainer(ntracks);
129 AliClusterContainer *clusterCont = task->AddClusterContainer(nclusters);
131 task->SetJetContainerBase(0);
133 TString strType(type);
134 AliJetContainer *jetContBase = task->AddJetContainer(njetsBase,strType,R);
136 jetContBase->SetRhoName(nrhoBase);
137 jetContBase->ConnectParticleContainer(trackCont);
138 jetContBase->ConnectClusterContainer(clusterCont);
139 jetContBase->SetZLeadingCut(0.98,0.98);
140 task->SetPercAreaCut(0.6, 0);
143 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
145 task->SetCentralityEstimator(CentEst);
147 task->SelectCollisionCandidates(pSel);
149 task->SetUseAliAnaUtils(kFALSE);
154 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
157 TString contName(wagonName);
158 TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
159 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
160 mgr->ConnectOutput(task,1,coutput1);
167 AliAnalysisTaskRhoBase *AttachRhoTask(TString kPeriod ,// = "LHC13b",
168 TString kTracksName ,// = "PicoTracks",
169 TString kClusName ,// = "caloClustersCorr",
170 Double_t R ,// = 0.4,
171 Double_t ptminTrack ,// = 0.15,
172 Double_t etminClus // = 0.3
175 AliAnalysisTaskRhoBase *rhoTaskBase;
179 // Add kt jet finder and rho task in case we want background subtraction
180 AliEmcalJetTask *jetFinderKt;
181 AliEmcalJetTask *jetFinderAKt;
182 jetFinderKt = AddTaskEmcalJet(kTracksName, "", kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,0);
183 jetFinderAKt = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,0);
185 if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) {
187 jetFinderKt->SetMinJetPt(0.);
189 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
190 TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb
191 AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
192 jetFinderKt->GetName(),
193 jetFinderAKt->GetName(),
196 Form("RhoSparseR%03d",(int)(100*R)),
205 Form("RhoSparseR%03d",(int)(100*R)),
208 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
210 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
212 else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) {
214 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
216 TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
217 sfunc->SetParameter(2,1.76458);
218 sfunc->SetParameter(1,-0.0111656);
219 sfunc->SetParameter(0,0.000107296);
220 TString rhoname = Form("RhoR%03dptmin%3.0f%s",(int)(100*R),ptminTrack*1000.0,kTracksName.Data());
221 AliAnalysisTaskRho *rhoTask = AddTaskRho(
222 jetFinderKt->GetName(),
233 rhoTask->SetHistoBins(100,0,250);
235 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;