]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetTriggerQA.C
Add protection against ghostArea==0
[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 = "",
16 TString kPeriod = "LHC13b"
609c7a0d 17 ) {
18
0531c107 19 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
20 if (!mgr)
21 {
22 Error("AddTaskEmcalJetTriggerQA","No analysis manager found.");
23 return 0;
24 }
25 Bool_t ismc=kFALSE;
26 ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE;
27
28 // Check the analysis type using the event handlers connected to the analysis manager.
29 //==============================================================================
30 if (!mgr->GetInputEventHandler())
31 {
32 ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler");
33 return NULL;
34 }
35
609c7a0d 36 // #### Add necessary jet finder tasks
37 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
38
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);
44 }
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);
48 }
49 else { //full jets
50 jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
51 jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
52 }
53
254370e1 54 // jetFinderTask1->SetRecombSheme(0);
55 // jetFinderTask2->SetRecombSheme(0);
56
609c7a0d 57 TString strJets1 = jetFinderTask1->GetName();
58 TString strJets2 = jetFinderTask2->GetName();
0531c107 59
8e49a788 60 AliAnalysisTaskRhoBase *rhoTask;
609c7a0d 61 if(rhoType==1) {
8e49a788 62 rhoTask = AttachRhoTask(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus);
63 rhoTask->SetCentralityEstimator(CentEst);
254370e1 64 rhoTask->SelectCollisionCandidates(AliVEvent::kAny);
609c7a0d 65 }
66
67 TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data());
0531c107 68
609c7a0d 69 //Configure TriggerQA task
0531c107 70 AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName);
9e5eee5d 71 AliParticleContainer *trackCont = task->AddParticleContainer(kTracksName.Data());
72 AliClusterContainer *clusterCont = task->AddClusterContainer(kClusName.Data());
73
74 task->SetContainerFull(0);
75 task->SetContainerCharged(1);
76 AliJetContainer *jetCont0 = task->AddJetContainer(strJets1.Data(),"EMCAL",R);
8e49a788 77 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
9e5eee5d 78 AliJetContainer *jetCont1 = NULL;
8e49a788 79 if(strJets2.Contains("Charged")) {
80 jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R);
81 if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1);
82 }
9e5eee5d 83 else {
84 jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R);
85 task->SetZLeadingCut(0.98,0.98,1);
e50460de 86 task->SetNEFCut(0.,nefCut,1);
609c7a0d 87 }
88
9e5eee5d 89 task->SetZLeadingCut(0.98,0.98,0);
e50460de 90 task->SetNEFCut(0.,nefCut,0);
9e5eee5d 91
92 for(Int_t i=0; i<2; i++) {
93 task->SetPercAreaCut(0.6, i);
0531c107 94 }
9e5eee5d 95
96 task->SetTriggerClass(trigClass.Data());
97 task->SetCaloCellsName(kEmcalCellsName.Data());
8e49a788 98 task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data());
9e5eee5d 99
609c7a0d 100 task->SetCentralityEstimator(CentEst);
0531c107 101
609c7a0d 102 task->SelectCollisionCandidates(pSel);
0531c107 103
0714a353 104 task->SetUseAliAnaUtils(kTRUE);
0714a353 105
677e90b9 106 if(kPeriod.Contains("LHC13b4"))
107 task-SetIsPythia(kTRUE);
108
0531c107 109 mgr->AddTask(task);
110
111 //Connnect input
112 mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() );
113
114 //Connect output
115 AliAnalysisDataContainer *coutput1 = 0x0;
116
117 TString containerName1 = Form("%s",wagonName.Data());
118
119 TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
120
121 coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
122 mgr->ConnectOutput(task,1,coutput1);
123
124 return task;
125
126}
8e49a788 127
128
129AliAnalysisTaskRhoBase *AttachRhoTask(TString kPeriod = "LHC13b",
130 TString kTracksName = "PicoTracks",
131 TString kClusName = "caloClustersCorr",
132 Double_t R = 0.4,
133 Double_t ptminTrack = 0.15,
134 Double_t etminClus = 0.3
135 ) {
136
137 AliAnalysisTaskRhoBase *rhoTaskBase;
138
139 kPeriod.ToLower();
140
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
147 if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) {
148
149
150 jetFinderKt->SetMinJetPt(0.);
151
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(),
157 kTracksName,
158 kClusName,
159 Form("RhoSparseR%03d",(int)(100*R)),
160 R,
161 "TPC",
162 0.01,
163 0.15,
164 0,
165 fScale,
166 0,
167 kTRUE,
168 Form("RhoSparseR%03d",(int)(100*R)),
169 kTRUE
170 );
171 rhoTaskSparse->SetUseAliAnaUtils(kTRUE);
172
173 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTaskSparse;
174 }
175 else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) {
176
177 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C");
178
179 TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100);
180 sfunc->SetParameter(2,1.76458);
181 sfunc->SetParameter(1,-0.0111656);
182 sfunc->SetParameter(0,0.000107296);
183 AliAnalysisTaskRho *rhoTask = AddTaskRho(
184 jetFinderKt->GetName(),
185 kTracksName,
186 kClusName,
187 Form("RhoR%03d",(int)(100*R)),
188 R,
189 "TPC",
190 0.01,
191 0,
192 sfunc,
193 2,
194 kTRUE);
195 rhoTask->SetHistoBins(100,0,250);
196
197 rhoTaskBase = dynamic_cast<AliAnalysisTaskRhoBase*>rhoTask;
198
199 }
200
201 return rhoTaskBase;
202
203}