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",
17 TString kBeamType = "pp" //or pPb or PbPb
19 // The following three lines are added for backwards compatibility
21 if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h")) kBeamType = "PbPb";
22 if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) kBeamType = "pPb";
24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
27 Error("AddTaskEmcalJetTriggerQA","No analysis manager found.");
31 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
33 // Check the analysis type using the event handlers connected to the analysis manager.
34 //==============================================================================
35 if (!mgr->GetInputEventHandler())
37 ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler");
41 // #### Add necessary jet finder tasks
42 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
44 AliEmcalJetTask* jetFinderTask1;
45 AliEmcalJetTask* jetFinderTask2;
46 if(kClusName.IsNull()) { //particle level jets
47 jetFinderTask1 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
48 jetFinderTask2 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
50 else if(kTracksName.IsNull()) { //neutral/calo jets
51 jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kNEUTRALJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
52 jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
55 jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
56 jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
58 jetFinderTask1->SelectCollisionCandidates(AliVEvent::kAny);
59 jetFinderTask2->SelectCollisionCandidates(AliVEvent::kAny);
61 TString strJets1 = jetFinderTask1->GetName();
62 TString strJets2 = jetFinderTask2->GetName();
64 AliAnalysisTaskRhoBase *rhoTask;
66 rhoTask = AttachRhoTask(kBeamType,kTracksName,kClusName,R,ptminTrack,etminClus);
68 rhoTask->SetCentralityEstimator(CentEst);
69 rhoTask->SelectCollisionCandidates(AliVEvent::kAny);
72 Warning("AddTaskEmcalJetTriggerQA","Asked for rho task but configuration unknown. Continuing configuration without rho task.");
77 TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data());
79 //Configure TriggerQA task
80 AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName);
81 AliParticleContainer *trackCont = task->AddParticleContainer(kTracksName.Data());
82 AliClusterContainer *clusterCont = task->AddClusterContainer(kClusName.Data());
84 task->SetContainerFull(0);
85 task->SetContainerCharged(1);
86 AliJetContainer *jetCont0 = task->AddJetContainer(strJets1.Data(),"EMCAL",R);
87 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
88 AliJetContainer *jetCont1 = NULL;
89 if(strJets2.Contains("Charged")) {
90 jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R);
91 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1);
94 jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R);
95 task->SetZLeadingCut(0.98,0.98,1);
96 task->SetNEFCut(0.,nefCut,1);
99 task->SetZLeadingCut(0.98,0.98,0);
100 task->SetNEFCut(0.,nefCut,0);
102 for(Int_t i=0; i<2; i++) {
103 task->SetPercAreaCut(0.6, i);
106 task->SetTriggerClass(trigClass.Data());
107 task->SetCaloCellsName(kEmcalCellsName.Data());
108 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
110 task->SetCentralityEstimator(CentEst);
111 task->SelectCollisionCandidates(pSel);
113 task->SetUseAliAnaUtils(kTRUE);
114 task->SetVzRange(-10.,10.);
116 if(kPeriod.Contains("LHC13b4"))
117 task->SetIsPythia(kTRUE);
122 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
125 AliAnalysisDataContainer *coutput1 = 0x0;
126 TString containerName1 = Form("%s",wagonName.Data());
127 TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
128 coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
129 mgr->ConnectOutput(task,1,coutput1);
134 AliAnalysisTaskRhoBase *AttachRhoTask(TString kBeamType = "pp",
135 TString kTracksName = "PicoTracks",
136 TString kClusName = "caloClustersCorr",
138 Double_t ptminTrack = 0.15,
139 Double_t etminClus = 0.3
142 AliAnalysisTaskRhoBase *rhoTaskBase;
144 // Add kt jet finder and rho task in case we want background subtraction
145 Double_t minJetPt = 0.1;
146 if(kBeamType == "pPb") minJetPt = 0.;
147 AliEmcalJetTask *jetFinderKt;
148 AliEmcalJetTask *jetFinderAKt;
149 jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",minJetPt);
150 jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
151 jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
152 jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
154 if(kBeamType == "pPb") {
155 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
156 TF1 *fScale = new TF1("fScale","1.28",0.,100.); //scale factor for pPb
157 AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
158 jetFinderKt->GetName(),
159 jetFinderAKt->GetName(),
162 Form("RhoSparseR%03d",(int)(100*R)),
171 Form("RhoSparseR%03d",(int)(100*R)),
174 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
175 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
177 else if(kBeamType=="PbPb") {
178 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
180 TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
181 sfunc->SetParameter(2,1.76458);
182 sfunc->SetParameter(1,-0.0111656);
183 sfunc->SetParameter(0,0.000107296);
184 AliAnalysisTaskRho *rhoTask = AddTaskRho(
185 jetFinderKt->GetName(),
188 Form("RhoR%03d",(int)(100*R)),
196 rhoTask->SetHistoBins(100,0,250);
198 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;