]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetTriggerQA.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJetTriggerQA.C
CommitLineData
8e49a788 1enum AlgoType {kKT, kANTIKT};
2enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
3
609c7a0d 4AliAnalysisTaskEmcalJetTriggerQA* AddTaskEmcalJetTriggerQA(TString kTracksName = "PicoTracks",
8e49a788 5 TString kClusName = "caloClustersCorr",
609c7a0d 6 Double_t R = 0.4,
7 Double_t ptminTrack = 0.15,
8 Double_t etminClus = 0.3,
9 Int_t rhoType = 0,
609c7a0d 10 TString trigClass = "",
11 TString kEmcalCellsName = "",
12 const char *CentEst = "V0A",
e50460de 13 Int_t pSel = AliVEvent::kINT7,
8e49a788 14 Float_t nefCut = 10.,
15 TString kEmcalTriggers = "",
86daa855 16 TString kPeriod = "LHC13b",
17 TString kBeamType = "pp" //or pPb or PbPb
609c7a0d 18 ) {
86daa855 19 // The following three lines are added for backwards compatibility
20 kPeriod.ToLower();
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";
609c7a0d 23
0531c107 24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
25 if (!mgr)
26 {
27 Error("AddTaskEmcalJetTriggerQA","No analysis manager found.");
28 return 0;
29 }
30 Bool_t ismc=kFALSE;
31 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
32
33 // Check the analysis type using the event handlers connected to the analysis manager.
34 //==============================================================================
35 if (!mgr->GetInputEventHandler())
36 {
37 ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler");
38 return NULL;
39 }
40
609c7a0d 41 // #### Add necessary jet finder tasks
42 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
43
44 AliEmcalJetTask* jetFinderTask1;
45 AliEmcalJetTask* jetFinderTask2;
46 if(kClusName.IsNull()) { //particle level jets
962e3ba1 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.);
609c7a0d 49 }
50 else if(kTracksName.IsNull()) { //neutral/calo jets
962e3ba1 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.);
609c7a0d 53 }
54 else { //full jets
962e3ba1 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.);
609c7a0d 57 }
5381c5a1 58 jetFinderTask1->SelectCollisionCandidates(AliVEvent::kAny);
59 jetFinderTask2->SelectCollisionCandidates(AliVEvent::kAny);
254370e1 60
609c7a0d 61 TString strJets1 = jetFinderTask1->GetName();
62 TString strJets2 = jetFinderTask2->GetName();
0531c107 63
8e49a788 64 AliAnalysisTaskRhoBase *rhoTask;
609c7a0d 65 if(rhoType==1) {
86daa855 66 rhoTask = AttachRhoTask(kBeamType,kTracksName,kClusName,R,ptminTrack,etminClus);
49df7018 67 if(rhoTask) {
68 rhoTask->SetCentralityEstimator(CentEst);
69 rhoTask->SelectCollisionCandidates(AliVEvent::kAny);
70 }
71 else {
72 Warning("AddTaskEmcalJetTriggerQA","Asked for rho task but configuration unknown. Continuing configuration without rho task.");
73 rhoType = 0;
74 }
609c7a0d 75 }
76
77 TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data());
0531c107 78
609c7a0d 79 //Configure TriggerQA task
0531c107 80 AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName);
9e5eee5d 81 AliParticleContainer *trackCont = task->AddParticleContainer(kTracksName.Data());
82 AliClusterContainer *clusterCont = task->AddClusterContainer(kClusName.Data());
83
84 task->SetContainerFull(0);
85 task->SetContainerCharged(1);
86 AliJetContainer *jetCont0 = task->AddJetContainer(strJets1.Data(),"EMCAL",R);
8e49a788 87 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
9e5eee5d 88 AliJetContainer *jetCont1 = NULL;
8e49a788 89 if(strJets2.Contains("Charged")) {
90 jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R);
91 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1);
92 }
9e5eee5d 93 else {
94 jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R);
95 task->SetZLeadingCut(0.98,0.98,1);
e50460de 96 task->SetNEFCut(0.,nefCut,1);
609c7a0d 97 }
98
9e5eee5d 99 task->SetZLeadingCut(0.98,0.98,0);
e50460de 100 task->SetNEFCut(0.,nefCut,0);
9e5eee5d 101
102 for(Int_t i=0; i<2; i++) {
103 task->SetPercAreaCut(0.6, i);
0531c107 104 }
9e5eee5d 105
106 task->SetTriggerClass(trigClass.Data());
107 task->SetCaloCellsName(kEmcalCellsName.Data());
8e49a788 108 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
9e5eee5d 109
609c7a0d 110 task->SetCentralityEstimator(CentEst);
609c7a0d 111 task->SelectCollisionCandidates(pSel);
0531c107 112
0714a353 113 task->SetUseAliAnaUtils(kTRUE);
6cc60022 114 task->SetVzRange(-10.,10.);
0714a353 115
677e90b9 116 if(kPeriod.Contains("LHC13b4"))
86daa855 117 task->SetIsPythia(kTRUE);
677e90b9 118
0531c107 119 mgr->AddTask(task);
120
121 //Connnect input
122 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
123
124 //Connect output
125 AliAnalysisDataContainer *coutput1 = 0x0;
0531c107 126 TString containerName1 = Form("%s",wagonName.Data());
0531c107 127 TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
0531c107 128 coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
129 mgr->ConnectOutput(task,1,coutput1);
130
131 return task;
0531c107 132}
8e49a788 133
86daa855 134AliAnalysisTaskRhoBase *AttachRhoTask(TString kBeamType = "pp",
8e49a788 135 TString kTracksName = "PicoTracks",
136 TString kClusName = "caloClustersCorr",
137 Double_t R = 0.4,
138 Double_t ptminTrack = 0.15,
139 Double_t etminClus = 0.3
140 ) {
141
142 AliAnalysisTaskRhoBase *rhoTaskBase;
143
8e49a788 144 // Add kt jet finder and rho task in case we want background subtraction
7c119e2b 145 Double_t minJetPt = 0.1;
146 if(kBeamType == "pPb") minJetPt = 0.;
8e49a788 147 AliEmcalJetTask *jetFinderKt;
148 AliEmcalJetTask *jetFinderAKt;
7c119e2b 149 jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",minJetPt);
962e3ba1 150 jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
f4d574d2 151 jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
152 jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
8e49a788 153
86daa855 154 if(kBeamType == "pPb") {
8e49a788 155 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
4d3b366f 156 TF1 *fScale = new TF1("fScale","1.28",0.,100.); //scale factor for pPb
8e49a788 157 AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse(
158 jetFinderKt->GetName(),
159 jetFinderAKt->GetName(),
160 kTracksName,
161 kClusName,
162 Form("RhoSparseR%03d",(int)(100*R)),
163 R,
164 "TPC",
165 0.01,
166 0.15,
167 0,
168 fScale,
169 0,
170 kTRUE,
171 Form("RhoSparseR%03d",(int)(100*R)),
172 kTRUE
173 );
174 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
8e49a788 175 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
176 }
86daa855 177 else if(kBeamType=="PbPb") {
8e49a788 178 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
179
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(),
186 kTracksName,
187 kClusName,
188 Form("RhoR%03d",(int)(100*R)),
189 R,
190 "TPC",
191 0.01,
192 0,
193 sfunc,
194 2,
195 kTRUE);
196 rhoTask->SetHistoBins(100,0,250);
197
198 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;
8e49a788 199 }
200
201 return rhoTaskBase;
8e49a788 202}