]>
Commit | Line | Data |
---|---|---|
8e49a788 | 1 | enum AlgoType {kKT, kANTIKT}; |
2 | enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS}; | |
3 | ||
609c7a0d | 4 | AliAnalysisTaskEmcalJetTriggerQA* 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 | ||
129 | AliAnalysisTaskRhoBase *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 | } |