1 enum AlgoType {kKT, kANTIKT};
2 enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
4 AliAnalysisTaskEmcalJetTriggerQA* AddTaskEmcalJetTriggerQA(TString kTracksName = "PicoTracks",
5 TString kClusName = "caloClustersCorr",
7 Double_t ptminTrack = 0.15,
8 Double_t etminClus = 0.3,
10 TString trigClass = "",
11 TString kEmcalCellsName = "",
12 const char *CentEst = "V0A",
13 Int_t pSel = AliVEvent::kINT7,
15 TString kEmcalTriggers = "",
16 TString kPeriod = "LHC13b"
19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
22 Error("AddTaskEmcalJetTriggerQA","No analysis manager found.");
26 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
28 // Check the analysis type using the event handlers connected to the analysis manager.
29 //==============================================================================
30 if (!mgr->GetInputEventHandler())
32 ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler");
36 // #### Add necessary jet finder tasks
37 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
39 AliEmcalJetTask* jetFinderTask1;
40 AliEmcalJetTask* jetFinderTask2;
41 if(kClusName.IsNull()) { //particle level jets
42 jetFinderTask1 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
43 jetFinderTask2 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
45 else if(kTracksName.IsNull()) { //neutral/calo jets
46 jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kNEUTRALJETS, ptminTrack, etminClus);
47 jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
50 jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
51 jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
53 jetFinderTask1->SelectCollisionCandidates(AliVEvent::kAny);
54 jetFinderTask2->SelectCollisionCandidates(AliVEvent::kAny);
56 TString strJets1 = jetFinderTask1->GetName();
57 TString strJets2 = jetFinderTask2->GetName();
59 AliAnalysisTaskRhoBase *rhoTask;
61 rhoTask = AttachRhoTask(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus);
63 rhoTask->SetCentralityEstimator(CentEst);
64 rhoTask->SelectCollisionCandidates(AliVEvent::kAny);
67 Warning("AddTaskEmcalJetTriggerQA","Asked for rho task but configuration unknown. Continuing configuration without rho task.");
72 TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data());
74 //Configure TriggerQA task
75 AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName);
76 AliParticleContainer *trackCont = task->AddParticleContainer(kTracksName.Data());
77 AliClusterContainer *clusterCont = task->AddClusterContainer(kClusName.Data());
79 task->SetContainerFull(0);
80 task->SetContainerCharged(1);
81 AliJetContainer *jetCont0 = task->AddJetContainer(strJets1.Data(),"EMCAL",R);
82 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
83 AliJetContainer *jetCont1 = NULL;
84 if(strJets2.Contains("Charged")) {
85 jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R);
86 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1);
89 jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R);
90 task->SetZLeadingCut(0.98,0.98,1);
91 task->SetNEFCut(0.,nefCut,1);
94 task->SetZLeadingCut(0.98,0.98,0);
95 task->SetNEFCut(0.,nefCut,0);
97 for(Int_t i=0; i<2; i++) {
98 task->SetPercAreaCut(0.6, i);
101 task->SetTriggerClass(trigClass.Data());
102 task->SetCaloCellsName(kEmcalCellsName.Data());
103 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
105 task->SetCentralityEstimator(CentEst);
106 task->SelectCollisionCandidates(pSel);
108 task->SetUseAliAnaUtils(kTRUE);
109 task->SetVzRange(-10.,10.);
111 if(kPeriod.Contains("LHC13b4"))
112 task-SetIsPythia(kTRUE);
117 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
120 AliAnalysisDataContainer *coutput1 = 0x0;
121 TString containerName1 = Form("%s",wagonName.Data());
122 TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
123 coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
124 mgr->ConnectOutput(task,1,coutput1);
129 AliAnalysisTaskRhoBase *AttachRhoTask(TString kPeriod = "LHC13b",
130 TString kTracksName = "PicoTracks",
131 TString kClusName = "caloClustersCorr",
133 Double_t ptminTrack = 0.15,
134 Double_t etminClus = 0.3
137 AliAnalysisTaskRhoBase *rhoTaskBase;
141 // Add kt jet finder and rho task in case we want background subtraction
142 AliEmcalJetTask *jetFinderKt;
143 AliEmcalJetTask *jetFinderAKt;
144 jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus);
145 jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
146 jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
147 jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
149 if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) {
150 jetFinderKt->SetMinJetPt(0.);
152 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
153 TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb
154 AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
155 jetFinderKt->GetName(),
156 jetFinderAKt->GetName(),
159 Form("RhoSparseR%03d",(int)(100*R)),
168 Form("RhoSparseR%03d",(int)(100*R)),
171 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
172 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
174 else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) {
175 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
177 TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
178 sfunc->SetParameter(2,1.76458);
179 sfunc->SetParameter(1,-0.0111656);
180 sfunc->SetParameter(0,0.000107296);
181 AliAnalysisTaskRho *rhoTask = AddTaskRho(
182 jetFinderKt->GetName(),
185 Form("RhoR%03d",(int)(100*R)),
193 rhoTask->SetHistoBins(100,0,250);
195 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;