]>
Commit | Line | Data |
---|---|---|
59a5935a | 1 | // ************************************************************************************** |
2 | // * * | |
3 | // * Task for Jet properties and jet shape analysis in PWG4 Jet Task Force Train for pp * | |
4 | // * * | |
5 | // ************************************************************************************** | |
6 | ||
7 | ||
8 | /************************************************************************** | |
9 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
10 | * * | |
11 | * Author: The ALICE Off-line Project. * | |
12 | * Contributors are mentioned in the code where appropriate. * | |
13 | * * | |
14 | * Permission to use, copy, modify and distribute this software and its * | |
15 | * documentation strictly for non-commercial purposes is hereby granted * | |
16 | * without fee, provided that the above copyright notice appears in all * | |
17 | * copies and that both the copyright notice and this permission notice * | |
18 | * appear in the supporting documentation. The authors make no claims * | |
19 | * about the suitability of this software for any purpose. It is * | |
20 | * provided "as is" without express or implied warranty. * | |
21 | **************************************************************************/ | |
22 | ||
23 | /* $Id: */ | |
24 | ||
25 | #include "TList.h" | |
26 | #include "TH1F.h" | |
27 | #include "TH2F.h" | |
28 | #include "TH3F.h" | |
29 | #include "TString.h" | |
30 | #include "THnSparse.h" | |
31 | #include "TProfile.h" | |
32 | #include "TFile.h" | |
33 | #include "TKey.h" | |
34 | #include "TRandom3.h" | |
35 | ||
36 | #include "AliAODInputHandler.h" | |
37 | #include "AliAODHandler.h" | |
38 | #include "AliESDEvent.h" | |
39 | #include "AliAODMCParticle.h" | |
40 | #include "AliAODJet.h" | |
41 | #include "AliGenPythiaEventHeader.h" | |
42 | #include "AliGenHijingEventHeader.h" | |
43 | #include "AliInputEventHandler.h" | |
44 | ||
45 | #include "AliAnalysisHelperJetTasks.h" | |
46 | #include "AliAnalysisManager.h" | |
47 | #include "AliAnalysisTaskSE.h" | |
48 | #include "AliVParticle.h" | |
49 | #include "AliAODTrack.h" | |
50 | #include "AliVEvent.h" | |
51 | ||
d391281b | 52 | |
59a5935a | 53 | #include "AliAnalysisTaskJetProperties.h" |
54 | ||
55 | ClassImp(AliAnalysisTaskJetProperties) | |
56 | ||
57 | //_________________________________________________________________________________// | |
8c37dfbf | 58 | |
59 | AliAnalysisTaskJetProperties::AliAnalysisTaskJetProperties() | |
60 | : AliAnalysisTaskSE() | |
61 | ,fESD(0) | |
62 | ,fAOD(0) | |
63 | ,fAODJets(0) | |
64 | ,fAODExtension(0) | |
65 | ,fNonStdFile("") | |
66 | ,fBranchJets("jets") | |
67 | ,fTrackType(kTrackAOD) | |
68 | ,fJetRejectType(0) | |
e84e0b8d | 69 | ,fRejectPileup(1) |
8c37dfbf | 70 | ,fUseAODInputJets(kTRUE) |
71 | ,fFilterMask(0) | |
72 | ,fUsePhysicsSelection(kTRUE) | |
73 | ,fMaxVertexZ(10) | |
74 | ,fNContributors(2) | |
75 | ,fTrackPtCut(0) | |
76 | ,fTrackEtaMin(0) | |
77 | ,fTrackEtaMax(0) | |
78 | ,fJetPtCut(0) | |
79 | ,fJetEtaMin(0) | |
80 | ,fJetEtaMax(0) | |
81 | ,fAvgTrials(0) | |
82 | ,fJetRadius(0.4) | |
83 | ,fJetList(0) | |
84 | ,fTrackList(0) | |
85 | ,fTrackListUE(0) | |
86 | ,fTrackListJet(0) | |
87 | ,fCommonHistList(0) | |
88 | ,fh1EvtSelection(0) | |
89 | ,fh1VertexNContributors(0) | |
90 | ,fh1VertexZ(0) | |
91 | ,fh1Xsec(0) | |
92 | ,fh1Trials(0) | |
93 | ,fh1PtHard(0) | |
94 | ,fh1PtHardTrials(0) | |
95 | ,fh2EtaJet(0) | |
96 | ,fh2PhiJet(0) | |
97 | ,fh2PtJet(0) | |
98 | ,fh1PtJet(0) | |
99 | ,fh2NtracksJet(0) | |
100 | ,fProNtracksJet(0) | |
101 | ,fh2EtaTrack(0) | |
102 | ,fh2PhiTrack(0) | |
103 | ,fh2PtTrack(0) | |
104 | ,fh2FF(0) | |
105 | ,fh2Ksi(0) | |
106 | ,fh2DelEta(0) | |
107 | ,fh2DelPhi(0) | |
108 | ,fh2DelR(0) | |
109 | ||
110 | ,fh1PtLeadingJet(0) | |
111 | ,fh2NtracksLeadingJet(0) | |
112 | ,fProNtracksLeadingJet(0) | |
113 | ,fh2DelR80pcNch(0) | |
114 | ,fProDelR80pcNch(0) | |
115 | ,fh2DelR80pcPt(0) | |
116 | ,fProDelR80pcPt(0) | |
117 | ,fh2AreaCh(0) | |
118 | ,fProAreaCh(0) | |
119 | ,fh3PtDelRNchSum(0) | |
120 | ,fh3PtDelRPtSum(0) | |
121 | ,fProDiffJetShape(0) | |
122 | ,fProIntJetShape(0) | |
123 | ||
124 | ,fh1PtSumInJetConeUE(0) | |
125 | ,fh2NtracksLeadingJetUE(0) | |
126 | ,fProNtracksLeadingJetUE(0) | |
127 | ,fh2DelR80pcNchUE(0) | |
128 | ,fProDelR80pcNchUE(0) | |
129 | ,fh2DelR80pcPtUE(0) | |
130 | ,fProDelR80pcPtUE(0) | |
131 | ,fh2AreaChUE(0) | |
132 | ,fProAreaChUE(0) | |
133 | ,fh3PtDelRNchSumUE(0) | |
134 | ,fh3PtDelRPtSumUE(0) | |
135 | ,fProDiffJetShapeUE(0) | |
136 | ,fProIntJetShapeUE(0) | |
137 | ||
138 | ,fh1CorrJetPt(0) | |
139 | ,fh2CorrPtTrack1(0) | |
140 | ,fh2CorrFF1(0) | |
141 | ,fh2CorrKsi1(0) | |
142 | ,fh2CorrjT1(0) | |
143 | ,fh1JetPtvsTrkSum(0) | |
144 | ||
59a5935a | 145 | { |
fed89a49 | 146 | for(Int_t ii=0; ii<13; ii++){ |
8c37dfbf | 147 | if(ii<6){ |
148 | fh2CorrPt1Pt2[ii] = NULL; | |
149 | fh2CorrZ1Z2[ii] = NULL; | |
150 | fh2CorrKsi1Ksi2[ii] = NULL; | |
151 | fh2CorrjT1jT2[ii] = NULL; | |
152 | } | |
153 | ||
efabdd32 | 154 | fProDelRNchSum[ii] = NULL; |
155 | fProDelRPtSum[ii] = NULL; | |
156 | fProDiffJetShapeA[ii] = NULL; | |
157 | fProIntJetShapeA[ii] = NULL; | |
8c37dfbf | 158 | |
fed89a49 | 159 | fProDelRNchSumUE[ii] = NULL; |
160 | fProDelRPtSumUE[ii] = NULL; | |
161 | fProDiffJetShapeAUE[ii] = NULL; | |
162 | fProIntJetShapeAUE[ii] = NULL; | |
59a5935a | 163 | }//ii loop |
164 | // default constructor | |
165 | } | |
166 | //_________________________________________________________________________________// | |
167 | ||
168 | AliAnalysisTaskJetProperties::AliAnalysisTaskJetProperties(const char *name) | |
169 | : AliAnalysisTaskSE(name) | |
170 | ,fESD(0) | |
171 | ,fAOD(0) | |
172 | ,fAODJets(0) | |
173 | ,fAODExtension(0) | |
174 | ,fNonStdFile("") | |
175 | ,fBranchJets("jets") | |
176 | ,fTrackType(kTrackAOD) | |
177 | ,fJetRejectType(0) | |
e84e0b8d | 178 | ,fRejectPileup(1) |
59a5935a | 179 | ,fUseAODInputJets(kTRUE) |
180 | ,fFilterMask(0) | |
181 | ,fUsePhysicsSelection(kTRUE) | |
182 | ,fMaxVertexZ(10) | |
183 | ,fNContributors(2) | |
184 | ,fTrackPtCut(0) | |
185 | ,fTrackEtaMin(0) | |
186 | ,fTrackEtaMax(0) | |
187 | ,fJetPtCut(0) | |
188 | ,fJetEtaMin(0) | |
189 | ,fJetEtaMax(0) | |
190 | ,fAvgTrials(0) | |
fed89a49 | 191 | ,fJetRadius(0.4) |
59a5935a | 192 | ,fJetList(0) |
193 | ,fTrackList(0) | |
fed89a49 | 194 | ,fTrackListUE(0) |
195 | ,fTrackListJet(0) | |
59a5935a | 196 | ,fCommonHistList(0) |
197 | ,fh1EvtSelection(0) | |
198 | ,fh1VertexNContributors(0) | |
199 | ,fh1VertexZ(0) | |
200 | ,fh1Xsec(0) | |
201 | ,fh1Trials(0) | |
202 | ,fh1PtHard(0) | |
203 | ,fh1PtHardTrials(0) | |
204 | ,fh2EtaJet(0) | |
205 | ,fh2PhiJet(0) | |
206 | ,fh2PtJet(0) | |
207 | ,fh1PtJet(0) | |
208 | ,fh2NtracksJet(0) | |
209 | ,fProNtracksJet(0) | |
210 | ,fh2EtaTrack(0) | |
211 | ,fh2PhiTrack(0) | |
212 | ,fh2PtTrack(0) | |
213 | ,fh2FF(0) | |
8c37dfbf | 214 | ,fh2Ksi(0) |
59a5935a | 215 | ,fh2DelEta(0) |
216 | ,fh2DelPhi(0) | |
217 | ,fh2DelR(0) | |
8c37dfbf | 218 | |
59a5935a | 219 | ,fh1PtLeadingJet(0) |
220 | ,fh2NtracksLeadingJet(0) | |
221 | ,fProNtracksLeadingJet(0) | |
222 | ,fh2DelR80pcNch(0) | |
223 | ,fProDelR80pcNch(0) | |
224 | ,fh2DelR80pcPt(0) | |
225 | ,fProDelR80pcPt(0) | |
226 | ,fh2AreaCh(0) | |
227 | ,fProAreaCh(0) | |
228 | ,fh3PtDelRNchSum(0) | |
229 | ,fh3PtDelRPtSum(0) | |
efabdd32 | 230 | ,fProDiffJetShape(0) |
231 | ,fProIntJetShape(0) | |
8c37dfbf | 232 | |
fed89a49 | 233 | ,fh1PtSumInJetConeUE(0) |
234 | ,fh2NtracksLeadingJetUE(0) | |
235 | ,fProNtracksLeadingJetUE(0) | |
236 | ,fh2DelR80pcNchUE(0) | |
237 | ,fProDelR80pcNchUE(0) | |
238 | ,fh2DelR80pcPtUE(0) | |
239 | ,fProDelR80pcPtUE(0) | |
240 | ,fh2AreaChUE(0) | |
241 | ,fProAreaChUE(0) | |
242 | ,fh3PtDelRNchSumUE(0) | |
243 | ,fh3PtDelRPtSumUE(0) | |
244 | ,fProDiffJetShapeUE(0) | |
245 | ,fProIntJetShapeUE(0) | |
8c37dfbf | 246 | |
247 | ,fh1CorrJetPt(0) | |
248 | ,fh2CorrPtTrack1(0) | |
249 | ,fh2CorrFF1(0) | |
250 | ,fh2CorrKsi1(0) | |
251 | ,fh2CorrjT1(0) | |
252 | ,fh1JetPtvsTrkSum(0) | |
59a5935a | 253 | { |
fed89a49 | 254 | for(Int_t ii=0; ii<13; ii++){ |
8c37dfbf | 255 | if(ii<6){ |
256 | fh2CorrPt1Pt2[ii] = NULL; | |
257 | fh2CorrZ1Z2[ii] = NULL; | |
258 | fh2CorrKsi1Ksi2[ii] = NULL; | |
259 | fh2CorrjT1jT2[ii] = NULL; | |
260 | } | |
261 | ||
efabdd32 | 262 | fProDelRNchSum[ii] = NULL; |
263 | fProDelRPtSum[ii] = NULL; | |
264 | fProDiffJetShapeA[ii] = NULL; | |
265 | fProIntJetShapeA[ii] = NULL; | |
fed89a49 | 266 | |
267 | fProDelRNchSumUE[ii] = NULL; | |
268 | fProDelRPtSumUE[ii] = NULL; | |
269 | fProDiffJetShapeAUE[ii] = NULL; | |
270 | fProIntJetShapeAUE[ii] = NULL; | |
59a5935a | 271 | }//ii loop |
272 | // constructor | |
273 | DefineOutput(1,TList::Class()); | |
274 | } | |
275 | //_________________________________________________________________________________// | |
276 | ||
277 | AliAnalysisTaskJetProperties::~AliAnalysisTaskJetProperties() | |
278 | { | |
279 | // destructor | |
280 | if(fJetList) delete fJetList; | |
8c37dfbf | 281 | if(fTrackList) delete fTrackList; |
fed89a49 | 282 | if(fTrackListUE) delete fTrackListUE; |
283 | if(fTrackListJet) delete fTrackListJet; | |
59a5935a | 284 | } |
285 | //_________________________________________________________________________________// | |
286 | ||
287 | Bool_t AliAnalysisTaskJetProperties::Notify() | |
288 | { | |
289 | // | |
290 | // Implemented Notify() to read the cross sections | |
291 | // and number of trials from pyxsec.root | |
292 | // (taken from AliAnalysisTaskJetSpectrum2) | |
293 | // | |
294 | if(fDebug > 1) Printf("AliAnalysisTaskJetProperties::Notify()"); | |
8c37dfbf | 295 | |
59a5935a | 296 | TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree(); |
297 | Float_t xsection = 0; | |
298 | Float_t ftrials = 1; | |
299 | ||
300 | fAvgTrials = 1; | |
301 | if(tree){ | |
302 | TFile *curfile = tree->GetCurrentFile(); | |
303 | if (!curfile) { | |
304 | Error("Notify","No current file"); | |
305 | return kFALSE; | |
306 | } | |
307 | if(!fh1Xsec||!fh1Trials){ | |
308 | Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__); | |
309 | return kFALSE; | |
310 | } | |
311 | AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,ftrials); | |
312 | fh1Xsec->Fill("<#sigma>",xsection); | |
313 | // construct a poor man average trials | |
314 | Float_t nEntries = (Float_t)tree->GetTree()->GetEntries(); | |
315 | if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries; | |
316 | } | |
317 | return kTRUE; | |
318 | } | |
319 | //_________________________________________________________________________________// | |
320 | ||
321 | void AliAnalysisTaskJetProperties::UserCreateOutputObjects() | |
322 | { | |
323 | //(Here, event selection part is taken from AliAnalysisTaskFramentationFunction) | |
324 | // create output objects | |
325 | if(fDebug > 1) Printf("AliAnalysisTaskJetProperties::UserCreateOutputObjects()"); | |
8c37dfbf | 326 | |
59a5935a | 327 | // create list of tracks and jets |
328 | fJetList = new TList(); | |
329 | fJetList->SetOwner(kFALSE); | |
330 | fTrackList = new TList(); | |
331 | fTrackList->SetOwner(kFALSE); | |
fed89a49 | 332 | fTrackListUE = new TList(); |
333 | fTrackListUE->SetOwner(kFALSE); | |
334 | fTrackListJet = new TList(); | |
335 | fTrackListJet->SetOwner(kFALSE); | |
59a5935a | 336 | |
337 | // Create histograms / output container | |
338 | OpenFile(1); | |
339 | fCommonHistList = new TList(); | |
340 | fCommonHistList->SetOwner(); | |
341 | ||
342 | Bool_t oldStatus = TH1::AddDirectoryStatus(); | |
343 | TH1::AddDirectory(kFALSE); | |
344 | // Histograms/TProfiles | |
345 | fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5); | |
346 | fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED"); | |
347 | fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected"); | |
348 | fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected"); | |
349 | fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected"); | |
350 | fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected"); | |
e84e0b8d | 351 | fh1EvtSelection->GetXaxis()->SetBinLabel(6,"pile up: rejected"); |
8c37dfbf | 352 | |
59a5935a | 353 | |
354 | fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5); | |
355 | fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.); | |
356 | fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1); | |
357 | fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>"); | |
358 | fh1Trials = new TH1F("fh1Trials","trials from pyxsec.root",1,0,1); | |
359 | fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}"); | |
360 | fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5); | |
361 | fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5); | |
362 | ||
8c37dfbf | 363 | |
59a5935a | 364 | Int_t kNbinsPtSlice=20; Float_t xMinPtSlice=0.0; Float_t xMaxPtSlice=100.0; |
365 | Int_t kNbinsEta=40; Float_t xMinEta=-2.0; Float_t xMaxEta=2.0; | |
366 | Int_t kNbinsPhi=90; Float_t xMinPhi=0.0; Float_t xMaxPhi=TMath::TwoPi(); | |
8c37dfbf | 367 | Int_t kNbinsPt=250; Float_t xMinPt=0.0; Float_t xMaxPt=250.0; |
59a5935a | 368 | Int_t kNbinsNtracks=50; Float_t xMinNtracks=0.0; Float_t xMaxNtracks=50.0; |
8c37dfbf | 369 | Int_t kNbinsFF=200; Float_t xMinFF=-0.05; Float_t xMaxFF=1.95; |
370 | Int_t kNbinsKsi=80; Float_t xMinKsi=0.; Float_t xMaxKsi = 8.0; | |
59a5935a | 371 | Int_t kNbinsDelR1D=50; Float_t xMinDelR1D=0.0; Float_t xMaxDelR1D=1.0; |
8c37dfbf | 372 | Int_t kNbinsjT=100; Float_t xMinjT=0.0; Float_t xMaxjT=10.0; |
59a5935a | 373 | |
374 | fh2EtaJet = new TH2F("EtaJet","EtaJet", | |
375 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
376 | kNbinsEta, xMinEta, xMaxEta); | |
377 | fh2PhiJet = new TH2F("PhiJet","PhiJet", | |
378 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
379 | kNbinsPhi, xMinPhi, xMaxPhi); | |
380 | fh2PtJet = new TH2F("PtJet","PtJet", | |
381 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
382 | kNbinsPt, xMinPt, xMaxPt); | |
383 | fh1PtJet = new TH1F("PtJet1D","PtJet1D", | |
384 | kNbinsPt, xMinPt, xMaxPt); | |
385 | fh2NtracksJet = new TH2F("NtracksJet","NtracksJet", | |
386 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
387 | kNbinsNtracks, xMinNtracks, xMaxNtracks); | |
388 | fProNtracksJet = new TProfile("AvgNoOfTracksJet","AvgNoOfTracksJet", | |
389 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
390 | xMinNtracks, xMaxNtracks); | |
391 | fh2EtaTrack = new TH2F("EtaTrack","EtaTrack", | |
392 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
393 | kNbinsEta, xMinEta, xMaxEta); | |
394 | fh2PhiTrack = new TH2F("PhiTrack","PhiTrack", | |
395 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
396 | kNbinsPhi, xMinPhi, xMaxPhi); | |
397 | fh2PtTrack = new TH2F("PtTrack","PtTrack", | |
398 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
8c37dfbf | 399 | 2*kNbinsPt, xMinPt, xMaxPt); |
59a5935a | 400 | fh2FF = new TH2F("FF","FF", |
401 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
402 | kNbinsFF, xMinFF, xMaxFF); | |
8c37dfbf | 403 | fh2Ksi = new TH2F("Ksi","Ksi", |
404 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
405 | kNbinsKsi, xMinKsi, xMaxKsi); | |
59a5935a | 406 | fh2DelEta = new TH2F("DelEta","DelEta", |
407 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
408 | kNbinsEta, xMinEta, xMaxEta); | |
409 | fh2DelPhi = new TH2F("DelPhi","DelPhi", | |
410 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
411 | kNbinsPhi, xMinPhi, xMaxPhi); | |
412 | fh2DelR = new TH2F("DelR","DelR", | |
413 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
414 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D); | |
415 | ||
416 | ||
417 | ||
418 | Int_t kNbinsDelR=100; Float_t xMinDelR=0.0; Float_t xMaxDelR=1.0; | |
419 | Int_t kNbinsPtSliceJS=100; Float_t xMinPtSliceJS=0.0; Float_t xMaxPtSliceJS=250.0; | |
420 | ||
421 | fh1PtLeadingJet = new TH1F("PtLeadingJet","PtLeadingJet", | |
422 | kNbinsPt, xMinPt, xMaxPt); | |
423 | fh2NtracksLeadingJet = new TH2F("NtracksLeadingJet","NtracksLeadingJet", | |
424 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
425 | kNbinsNtracks, xMinNtracks, xMaxNtracks); | |
426 | fProNtracksLeadingJet = new TProfile("AvgNoOfTracksLeadingJet","AvgNoOfTracksLeadingJet", | |
427 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
428 | xMinNtracks, xMaxNtracks); | |
429 | fh2DelR80pcNch = new TH2F("delR80pcNch","delR80pcNch", | |
430 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
431 | kNbinsDelR, xMinDelR, xMaxDelR); | |
432 | fProDelR80pcNch = new TProfile("AvgdelR80pcNch","AvgdelR80pcNch", | |
433 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
434 | xMinDelR, xMaxDelR); | |
435 | fh2DelR80pcPt = new TH2F("delR80pcPt","delR80pcPt", | |
436 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
437 | kNbinsDelR, xMinDelR, xMaxDelR); | |
438 | fProDelR80pcPt = new TProfile("AvgdelR80pcPt","AvgdelR80pcPt", | |
439 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
440 | xMinDelR, xMaxDelR); | |
441 | fh2AreaCh = new TH2F("Area","Area", | |
442 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
443 | 72, 0.0, TMath::Pi()); | |
444 | fProAreaCh = new TProfile("AvgArea","AvgArea", | |
445 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
446 | 0.0, TMath::Pi()); | |
447 | fh3PtDelRNchSum = new TH3F("PtDelRNchSum","PtDelRNchSum", | |
448 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
449 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
450 | kNbinsNtracks, xMinNtracks, xMaxNtracks); | |
451 | fh3PtDelRPtSum = new TH3F("PtDelRPtSum","PtDelRPtSum", | |
452 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
453 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
454 | kNbinsPt, xMinPt, xMaxPt); | |
efabdd32 | 455 | fProDiffJetShape = new TProfile("DiffJetShape","DiffJetShape", |
456 | 10,0.0,1.0,0.0,250.0); | |
457 | fProIntJetShape = new TProfile("IntJetShape","IntJetShape", | |
458 | 10,0.0,1.0,0.0,250.0); | |
459 | ||
fed89a49 | 460 | |
461 | fh1PtSumInJetConeUE = new TH1F("PtSumInJetConeUE","PtSumInJetConeUE", | |
462 | 500, 0., 100.); | |
463 | fh2NtracksLeadingJetUE = new TH2F("NtracksLeadingJetUE","NtracksLeadingJetUE", | |
464 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
465 | kNbinsNtracks, xMinNtracks, xMaxNtracks); | |
466 | fProNtracksLeadingJetUE = new TProfile("AvgNoOfTracksLeadingJetUE","AvgNoOfTracksLeadingJetUE", | |
467 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
468 | xMinNtracks, xMaxNtracks); | |
469 | fh2DelR80pcNchUE = new TH2F("delR80pcNchUE","delR80pcNchUE", | |
470 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
471 | kNbinsDelR, xMinDelR, xMaxDelR); | |
472 | fProDelR80pcNchUE = new TProfile("AvgdelR80pcNchUE","AvgdelR80pcNchUE", | |
473 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
474 | xMinDelR, xMaxDelR); | |
475 | fh2DelR80pcPtUE = new TH2F("delR80pcPtUE","delR80pcPtUE", | |
476 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
477 | kNbinsDelR, xMinDelR, xMaxDelR); | |
478 | fProDelR80pcPtUE = new TProfile("AvgdelR80pcPtUE","AvgdelR80pcPtUE", | |
479 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
480 | xMinDelR, xMaxDelR); | |
481 | fh2AreaChUE = new TH2F("AreaUE","AreaUE", | |
482 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
483 | 72, 0.0, TMath::Pi()); | |
484 | fProAreaChUE = new TProfile("AvgAreaUE","AvgAreaUE", | |
485 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
486 | 0.0, TMath::Pi()); | |
487 | fh3PtDelRNchSumUE = new TH3F("PtDelRNchSumUE","PtDelRNchSumUE", | |
488 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
489 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
490 | kNbinsNtracks, xMinNtracks, xMaxNtracks); | |
491 | fh3PtDelRPtSumUE = new TH3F("PtDelRPtSumUE","PtDelRPtSumUE", | |
492 | kNbinsPtSliceJS, xMinPtSliceJS, xMaxPtSliceJS, | |
493 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
494 | kNbinsPt, xMinPt, xMaxPt); | |
495 | fProDiffJetShapeUE = new TProfile("DiffJetShapeUE","DiffJetShapeUE", | |
496 | 10,0.0,1.0,0.0,250.0); | |
497 | fProIntJetShapeUE = new TProfile("IntJetShapeUE","IntJetShapeUE", | |
498 | 10,0.0,1.0,0.0,250.0); | |
499 | ||
8c37dfbf | 500 | |
501 | fh1CorrJetPt = new TH1F("JetPtCorr","JetPtCorr", | |
502 | kNbinsPt, xMinPt, xMaxPt); | |
503 | fh2CorrPtTrack1 = new TH2F("TrackPtCorr", "TrackPtCorr", | |
504 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
505 | 2*kNbinsPt, xMinPt, xMaxPt); | |
506 | fh2CorrFF1 = new TH2F("FFCorr","FFCorr", | |
507 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
508 | kNbinsFF, xMinFF, xMaxFF); | |
509 | fh2CorrKsi1 = new TH2F("KsiCorr","KsiCorr", | |
510 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
511 | kNbinsKsi, xMinKsi, xMaxKsi); | |
512 | fh2CorrjT1 = new TH2F("jTCorr","jTCorr", | |
513 | kNbinsPtSlice, xMinPtSlice, xMaxPtSlice, | |
514 | kNbinsjT, xMinjT, xMaxjT); | |
515 | ||
516 | fh1JetPtvsTrkSum = new TH1F("diffJetPt_TrkPtSum","diffJetPt_TrkPtSum", | |
517 | 500, -250., 250.); | |
59a5935a | 518 | TString title; |
fed89a49 | 519 | for(Int_t ii=0; ii<13; ii++){ |
520 | if(ii==0)title = "_JetPt20to25"; | |
521 | if(ii==1)title = "_JetPt25to30"; | |
522 | if(ii==2)title = "_JetPt20to30"; | |
523 | ||
524 | if(ii==3)title = "_JetPt30to35"; | |
525 | if(ii==4)title = "_JetPt35to40"; | |
526 | if(ii==5)title = "_JetPt30to40"; | |
527 | ||
528 | if(ii==6)title = "_JetPt40to50"; | |
529 | if(ii==7)title = "_JetPt50to60"; | |
530 | if(ii==8)title = "_JetPt40to60"; | |
531 | ||
532 | if(ii==9) title = "_JetPt60to70"; | |
533 | if(ii==10)title = "_JetPt70to80"; | |
534 | if(ii==11)title = "_JetPt60to80"; | |
535 | ||
536 | if(ii==12)title = "_JetPt80to100"; | |
59a5935a | 537 | fProDelRNchSum[ii] = new TProfile(Form("AvgNchSumDelR%s",title.Data()),Form("AvgNchSumDelR%s",title.Data()), |
538 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
539 | xMinNtracks, xMaxNtracks); | |
540 | ||
541 | fProDelRPtSum[ii] = new TProfile(Form("AvgPtSumDelR%s",title.Data()),Form("AvgPtSumDelR%s",title.Data()), | |
542 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
543 | xMinPt, xMaxPt); | |
544 | fProDelRNchSum[ii] ->GetXaxis()->SetTitle("R"); | |
545 | fProDelRNchSum[ii] ->GetYaxis()->SetTitle("<NchSum>"); | |
546 | fProDelRPtSum[ii] ->GetXaxis()->SetTitle("R"); | |
547 | fProDelRPtSum[ii] ->GetYaxis()->SetTitle("<PtSum>"); | |
efabdd32 | 548 | |
549 | fProDiffJetShapeA[ii] = new TProfile(Form("DiffJetShape%s",title.Data()),Form("DiffJetShape%s",title.Data()), | |
550 | 10,0.0,1.0,0.0,250.0); | |
551 | fProIntJetShapeA[ii] = new TProfile(Form("IntJetShape%s",title.Data()),Form("IntJetShape%s",title.Data()), | |
552 | 10,0.0,1.0,0.0,250.0); | |
553 | ||
554 | fProDiffJetShapeA[ii]->GetXaxis()->SetTitle("R"); | |
555 | fProDiffJetShapeA[ii]->GetYaxis()->SetTitle("Diff jet shape"); | |
556 | fProIntJetShapeA[ii]->GetXaxis()->SetTitle("R"); | |
557 | fProIntJetShapeA[ii]->GetYaxis()->SetTitle("Integrated jet shape"); | |
558 | ||
59a5935a | 559 | fCommonHistList->Add(fProDelRNchSum[ii]); |
560 | fCommonHistList->Add(fProDelRPtSum[ii]); | |
efabdd32 | 561 | fCommonHistList->Add(fProDiffJetShapeA[ii]); |
562 | fCommonHistList->Add(fProIntJetShapeA[ii]); | |
fed89a49 | 563 | |
564 | fProDelRNchSumUE[ii] = new TProfile(Form("AvgNchSumDelR%sUE",title.Data()),Form("AvgNchSumDelR%sUE",title.Data()), | |
565 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
566 | xMinNtracks, xMaxNtracks); | |
567 | ||
568 | fProDelRPtSumUE[ii] = new TProfile(Form("AvgPtSumDelR%sUE",title.Data()),Form("AvgPtSumDelR%sUE",title.Data()), | |
569 | kNbinsDelR1D, xMinDelR1D, xMaxDelR1D, | |
570 | xMinPt, xMaxPt); | |
571 | fProDelRNchSumUE[ii] ->GetXaxis()->SetTitle("R"); | |
572 | fProDelRNchSumUE[ii] ->GetYaxis()->SetTitle("<N_{ch}^{Sum,UE}>"); | |
573 | fProDelRPtSumUE[ii] ->GetXaxis()->SetTitle("R"); | |
574 | fProDelRPtSumUE[ii] ->GetYaxis()->SetTitle("<p_{T}^{sum, UE}>"); | |
575 | ||
576 | fProDiffJetShapeAUE[ii] = new TProfile(Form("DiffJetShape%sUE",title.Data()),Form("DiffJetShape%sUE",title.Data()), | |
577 | 10,0.0,1.0,0.0,250.0); | |
578 | fProIntJetShapeAUE[ii] = new TProfile(Form("IntJetShape%sUE",title.Data()),Form("IntJetShape%sUE",title.Data()), | |
579 | 10,0.0,1.0,0.0,250.0); | |
580 | ||
581 | fProDiffJetShapeAUE[ii]->GetXaxis()->SetTitle("R"); | |
582 | fProDiffJetShapeAUE[ii]->GetYaxis()->SetTitle("Diff jet shape UE"); | |
583 | fProIntJetShapeAUE[ii]->GetXaxis()->SetTitle("R"); | |
584 | fProIntJetShapeAUE[ii]->GetYaxis()->SetTitle("Integrated jet shape UE"); | |
585 | ||
586 | fCommonHistList->Add(fProDelRNchSumUE[ii]); | |
587 | fCommonHistList->Add(fProDelRPtSumUE[ii]); | |
588 | fCommonHistList->Add(fProDiffJetShapeAUE[ii]); | |
589 | fCommonHistList->Add(fProIntJetShapeAUE[ii]); | |
590 | }//ii loop | |
59a5935a | 591 | |
592 | fh2EtaJet ->GetXaxis()->SetTitle("JetPt"); fh2EtaJet ->GetYaxis()->SetTitle("JetEta"); | |
593 | fh2PhiJet ->GetXaxis()->SetTitle("JetPt"); fh2PhiJet ->GetYaxis()->SetTitle("JetPhi"); | |
594 | fh2PtJet ->GetXaxis()->SetTitle("JetPt"); fh2PtJet ->GetYaxis()->SetTitle("JetPt"); | |
595 | fh1PtJet ->GetXaxis()->SetTitle("JetPt"); fh1PtJet ->GetYaxis()->SetTitle("#jets"); | |
596 | fh2NtracksJet ->GetXaxis()->SetTitle("JetPt"); fh2NtracksJet ->GetYaxis()->SetTitle("#tracks"); | |
597 | fProNtracksJet->GetXaxis()->SetTitle("JetPt"); fProNtracksJet->GetYaxis()->SetTitle("AgvNtracks"); | |
598 | fh2EtaTrack ->GetXaxis()->SetTitle("JetPt"); fh2EtaTrack ->GetYaxis()->SetTitle("TrackEta"); | |
599 | fh2PhiTrack ->GetXaxis()->SetTitle("JetPt"); fh2PhiTrack ->GetYaxis()->SetTitle("TrackPhi"); | |
600 | fh2PtTrack ->GetXaxis()->SetTitle("JetPt"); fh2PtTrack ->GetYaxis()->SetTitle("TrackPt"); | |
601 | fh2FF ->GetXaxis()->SetTitle("JetPt"); fh2FF ->GetYaxis()->SetTitle("FF"); | |
8c37dfbf | 602 | fh2Ksi ->GetXaxis()->SetTitle("JetPt"); fh2Ksi ->GetYaxis()->SetTitle("Ksi"); |
59a5935a | 603 | fh2DelEta ->GetXaxis()->SetTitle("JetPt"); fh2DelEta ->GetYaxis()->SetTitle("DelEta"); |
604 | fh2DelPhi ->GetXaxis()->SetTitle("JetPt"); fh2DelPhi ->GetYaxis()->SetTitle("DelPhi"); | |
605 | fh2DelR ->GetXaxis()->SetTitle("JetPt"); fh2DelR ->GetYaxis()->SetTitle("DelR"); | |
606 | ||
607 | fh1PtLeadingJet ->GetXaxis()->SetTitle("JetPt"); fh1PtLeadingJet ->GetYaxis()->SetTitle("#leading jets"); | |
608 | fh2NtracksLeadingJet ->GetXaxis()->SetTitle("JetPt"); fh2NtracksLeadingJet ->GetYaxis()->SetTitle("#tracks leading jet"); | |
609 | fProNtracksLeadingJet ->GetXaxis()->SetTitle("JetPt"); fProNtracksLeadingJet ->GetYaxis()->SetTitle("AvgNtracks leading jet"); | |
610 | fh2DelR80pcNch ->GetXaxis()->SetTitle("JetPt"); fh2DelR80pcNch ->GetYaxis()->SetTitle("R containing 80% of tracks"); | |
611 | fProDelR80pcNch ->GetXaxis()->SetTitle("JetPt"); fProDelR80pcNch ->GetYaxis()->SetTitle("<R> containing 80% of tracks"); | |
612 | fh2DelR80pcPt ->GetXaxis()->SetTitle("JetPt"); fh2DelR80pcPt ->GetYaxis()->SetTitle("R containing 80% of pT"); | |
613 | fProDelR80pcPt ->GetXaxis()->SetTitle("JetPt"); fProDelR80pcPt ->GetYaxis()->SetTitle("<R> containing 80% of pT"); | |
614 | fh2AreaCh ->GetXaxis()->SetTitle("JetPt"); fh2AreaCh ->GetYaxis()->SetTitle("Jet area"); | |
615 | fProAreaCh ->GetXaxis()->SetTitle("JetPt"); fProAreaCh ->GetYaxis()->SetTitle("<jet area>"); | |
616 | fh3PtDelRNchSum ->GetXaxis()->SetTitle("JetPt"); fh3PtDelRNchSum ->GetYaxis()->SetTitle("R"); fh3PtDelRNchSum->GetZaxis()->SetTitle("NchSum"); | |
617 | fh3PtDelRPtSum ->GetXaxis()->SetTitle("JetPt"); fh3PtDelRPtSum ->GetYaxis()->SetTitle("R"); fh3PtDelRPtSum ->GetZaxis()->SetTitle("PtSum"); | |
efabdd32 | 618 | fProDiffJetShape->GetXaxis()->SetTitle("R"); |
619 | fProDiffJetShape->GetYaxis()->SetTitle("Diff jet shape"); | |
620 | fProIntJetShape->GetXaxis()->SetTitle("R"); | |
621 | fProIntJetShape->GetYaxis()->SetTitle("Integrated jet shape"); | |
fed89a49 | 622 | |
623 | fh1PtSumInJetConeUE ->GetXaxis()->SetTitle("p_{T}^{sum, UE}(in cone R)"); fh1PtSumInJetConeUE ->GetYaxis()->SetTitle("#leading jets"); | |
624 | fh2NtracksLeadingJetUE ->GetXaxis()->SetTitle("JetPt"); fh2NtracksLeadingJetUE ->GetYaxis()->SetTitle("#tracks UE"); | |
625 | fProNtracksLeadingJetUE ->GetXaxis()->SetTitle("JetPt"); fProNtracksLeadingJetUE ->GetYaxis()->SetTitle("AvgNtracks UE"); | |
626 | fh2DelR80pcNchUE ->GetXaxis()->SetTitle("JetPt"); fh2DelR80pcNchUE ->GetYaxis()->SetTitle("R containing 80% of tracks"); | |
627 | fProDelR80pcNchUE ->GetXaxis()->SetTitle("JetPt"); fProDelR80pcNchUE ->GetYaxis()->SetTitle("<R> containing 80% of tracks"); | |
628 | fh2DelR80pcPtUE ->GetXaxis()->SetTitle("JetPt"); fh2DelR80pcPtUE ->GetYaxis()->SetTitle("R containing 80% of pT"); | |
629 | fProDelR80pcPtUE ->GetXaxis()->SetTitle("JetPt"); fProDelR80pcPtUE ->GetYaxis()->SetTitle("<R> containing 80% of pT"); | |
630 | fh2AreaChUE ->GetXaxis()->SetTitle("JetPt"); fh2AreaChUE ->GetYaxis()->SetTitle("UE area"); | |
631 | fProAreaChUE ->GetXaxis()->SetTitle("JetPt"); fProAreaChUE ->GetYaxis()->SetTitle("<UE area>"); | |
632 | fh3PtDelRNchSumUE ->GetXaxis()->SetTitle("JetPt"); fh3PtDelRNchSumUE ->GetYaxis()->SetTitle("R"); fh3PtDelRNchSumUE->GetZaxis()->SetTitle("NchSumUE"); | |
633 | fh3PtDelRPtSumUE ->GetXaxis()->SetTitle("JetPt"); fh3PtDelRPtSumUE ->GetYaxis()->SetTitle("R"); fh3PtDelRPtSumUE ->GetZaxis()->SetTitle("PtSumUE"); | |
634 | fProDiffJetShapeUE->GetXaxis()->SetTitle("R"); | |
635 | fProDiffJetShapeUE->GetYaxis()->SetTitle("Diff jet shape UE"); | |
636 | fProIntJetShapeUE->GetXaxis()->SetTitle("R"); | |
637 | fProIntJetShapeUE->GetYaxis()->SetTitle("Integrated jet shape UE"); | |
59a5935a | 638 | |
8c37dfbf | 639 | fh1CorrJetPt ->GetXaxis()->SetTitle("JetPt"); fh1CorrJetPt ->GetYaxis()->SetTitle("#jets"); |
640 | fh2CorrPtTrack1 ->GetXaxis()->SetTitle("JetPt"); fh2CorrPtTrack1 ->GetYaxis()->SetTitle("pt_track"); | |
641 | fh2CorrFF1 ->GetXaxis()->SetTitle("JetPt"); fh2CorrFF1 ->GetYaxis()->SetTitle("z_track"); | |
642 | fh2CorrKsi1 ->GetXaxis()->SetTitle("JetPt"); fh2CorrKsi1 ->GetYaxis()->SetTitle("ksi_track"); | |
643 | fh2CorrjT1 ->GetXaxis()->SetTitle("JetPt"); fh2CorrjT1 ->GetYaxis()->SetTitle("jt_track"); | |
644 | fh1JetPtvsTrkSum->GetXaxis()->SetTitle("JetPt-TrkPtSum"); | |
645 | ||
59a5935a | 646 | fCommonHistList->Add(fh1EvtSelection); |
647 | fCommonHistList->Add(fh1VertexNContributors); | |
648 | fCommonHistList->Add(fh1VertexZ); | |
649 | fCommonHistList->Add(fh1Xsec); | |
650 | fCommonHistList->Add(fh1Trials); | |
651 | fCommonHistList->Add(fh1PtHard); | |
652 | fCommonHistList->Add(fh1PtHardTrials); | |
653 | fCommonHistList->Add(fh2EtaJet); | |
654 | fCommonHistList->Add(fh2PhiJet); | |
655 | fCommonHistList->Add(fh2PtJet); | |
656 | fCommonHistList->Add(fh1PtJet); | |
657 | fCommonHistList->Add(fh2NtracksJet); | |
658 | fCommonHistList->Add(fProNtracksJet); | |
659 | fCommonHistList->Add(fh2EtaTrack); | |
660 | fCommonHistList->Add(fh2PhiTrack); | |
661 | fCommonHistList->Add(fh2PtTrack); | |
662 | fCommonHistList->Add(fh2FF); | |
8c37dfbf | 663 | fCommonHistList->Add(fh2Ksi); |
59a5935a | 664 | fCommonHistList->Add(fh2DelEta); |
665 | fCommonHistList->Add(fh2DelPhi); | |
666 | fCommonHistList->Add(fh2DelR); | |
667 | ||
668 | fCommonHistList->Add(fh1PtLeadingJet); | |
669 | fCommonHistList->Add(fh2NtracksLeadingJet); | |
670 | fCommonHistList->Add(fProNtracksLeadingJet); | |
671 | fCommonHistList->Add(fh2DelR80pcNch); | |
672 | fCommonHistList->Add(fProDelR80pcNch); | |
673 | fCommonHistList->Add(fh2DelR80pcPt); | |
674 | fCommonHistList->Add(fProDelR80pcPt); | |
675 | fCommonHistList->Add(fh2AreaCh); | |
676 | fCommonHistList->Add(fProAreaCh); | |
677 | fCommonHistList->Add(fh3PtDelRNchSum); | |
678 | fCommonHistList->Add(fh3PtDelRPtSum); | |
efabdd32 | 679 | fCommonHistList->Add(fProDiffJetShape); |
680 | fCommonHistList->Add(fProIntJetShape); | |
fed89a49 | 681 | |
fed89a49 | 682 | fCommonHistList->Add(fh1PtSumInJetConeUE); |
683 | fCommonHistList->Add(fh2NtracksLeadingJetUE); | |
684 | fCommonHistList->Add(fProNtracksLeadingJetUE); | |
685 | fCommonHistList->Add(fh2DelR80pcNchUE); | |
686 | fCommonHistList->Add(fProDelR80pcNchUE); | |
687 | fCommonHistList->Add(fh2DelR80pcPtUE); | |
688 | fCommonHistList->Add(fProDelR80pcPtUE); | |
689 | fCommonHistList->Add(fh2AreaChUE); | |
690 | fCommonHistList->Add(fProAreaChUE); | |
691 | fCommonHistList->Add(fh3PtDelRNchSumUE); | |
692 | fCommonHistList->Add(fh3PtDelRPtSumUE); | |
693 | fCommonHistList->Add(fProDiffJetShapeUE); | |
694 | fCommonHistList->Add(fProIntJetShapeUE); | |
695 | ||
8c37dfbf | 696 | fCommonHistList->Add(fh1CorrJetPt); |
697 | fCommonHistList->Add(fh2CorrPtTrack1); | |
698 | fCommonHistList->Add(fh2CorrFF1); | |
699 | fCommonHistList->Add(fh2CorrKsi1); | |
700 | fCommonHistList->Add(fh2CorrjT1); | |
701 | fCommonHistList->Add(fh1JetPtvsTrkSum); | |
702 | ||
703 | ||
704 | ||
705 | TString titleCorr; | |
706 | for(Int_t jj=0; jj<6; jj++){ | |
707 | if(jj == 0)titleCorr = "_JetPt10to20"; | |
708 | if(jj == 1)titleCorr = "_JetPt20to30"; | |
709 | if(jj == 2)titleCorr = "_JetPt30to40"; | |
710 | if(jj == 3)titleCorr = "_JetPt40to60"; | |
711 | if(jj == 4)titleCorr = "_JetPt60to80"; | |
712 | if(jj == 5)titleCorr = "_JetPt80to100"; | |
713 | ||
714 | fh2CorrPt1Pt2[jj] = new TH2F(Form("CorrPt1Pt2%s",titleCorr.Data()),Form("CorrPt1Pt2%s",titleCorr.Data()), | |
715 | 2*kNbinsPt, xMinPt, xMaxPt, | |
716 | 2*kNbinsPt, xMinPt, xMaxPt); | |
717 | fh2CorrZ1Z2[jj] = new TH2F(Form("CorrZ1Z2%s",titleCorr.Data()),Form("CorrZ1Z2%s",titleCorr.Data()), | |
718 | kNbinsFF, xMinFF, xMaxFF, | |
719 | kNbinsFF, xMinFF, xMaxFF); | |
720 | fh2CorrKsi1Ksi2[jj] = new TH2F(Form("CorrKsi1Ksi2%s",titleCorr.Data()),Form("CorrKsi1Ksi2%s",titleCorr.Data()), | |
721 | kNbinsKsi, xMinKsi, xMaxKsi, | |
722 | kNbinsKsi, xMinKsi, xMaxKsi); | |
723 | fh2CorrjT1jT2[jj] = new TH2F(Form("CorrjT1jT2%s",titleCorr.Data()),Form("CorrjT1jT2%s",titleCorr.Data()), | |
724 | kNbinsjT, xMinjT, xMaxjT, | |
725 | kNbinsjT, xMinjT, xMaxjT); | |
726 | ||
727 | ||
728 | fh2CorrPt1Pt2[jj] ->GetXaxis()->SetTitle("pt_track1"); | |
729 | fh2CorrZ1Z2[jj] ->GetXaxis()->SetTitle("z_track1"); | |
730 | fh2CorrKsi1Ksi2[jj] ->GetXaxis()->SetTitle("ksi_track1"); | |
731 | fh2CorrjT1jT2[jj] ->GetXaxis()->SetTitle("jt_track1"); | |
732 | ||
733 | fh2CorrPt1Pt2[jj] ->GetYaxis()->SetTitle("pt_track2"); | |
734 | fh2CorrZ1Z2[jj] ->GetYaxis()->SetTitle("z_track2"); | |
735 | fh2CorrKsi1Ksi2[jj] ->GetYaxis()->SetTitle("ksi_track2"); | |
736 | fh2CorrjT1jT2[jj] ->GetYaxis()->SetTitle("jt_track2"); | |
737 | ||
738 | fCommonHistList->Add(fh2CorrPt1Pt2[jj]); | |
739 | fCommonHistList->Add(fh2CorrZ1Z2[jj]); | |
740 | fCommonHistList->Add(fh2CorrKsi1Ksi2[jj]); | |
741 | fCommonHistList->Add(fh2CorrjT1jT2[jj]); | |
742 | }//jj loop | |
743 | ||
744 | ||
745 | ||
59a5935a | 746 | // =========== Switch on Sumw2 for all histos =========== |
747 | for (Int_t i=0; i<fCommonHistList->GetEntries(); ++i){ | |
748 | TH1 *h1 = dynamic_cast<TH1*>(fCommonHistList->At(i)); | |
749 | if (h1) h1->Sumw2(); | |
750 | else{ | |
751 | TProfile *hPro = dynamic_cast<TProfile*>(fCommonHistList->At(i)); | |
752 | if(hPro) hPro->Sumw2(); | |
753 | } | |
754 | } | |
755 | ||
756 | TH1::AddDirectory(oldStatus); | |
757 | PostData(1, fCommonHistList); | |
758 | } | |
759 | //_________________________________________________________________________________// | |
760 | ||
761 | void AliAnalysisTaskJetProperties::Init() | |
762 | { | |
763 | // Initialization | |
764 | if(fDebug > 1) Printf("AliAnalysisTaskJetProperties::Init()"); | |
765 | ||
766 | } | |
767 | //_________________________________________________________________________________// | |
768 | ||
769 | void AliAnalysisTaskJetProperties::UserExec(Option_t *) | |
770 | { | |
771 | // Main loop | |
772 | // Called for each event | |
8c37dfbf | 773 | if(fDebug > 2) Printf("AliAnalysisTaskJetProperties::UserExec()"); |
59a5935a | 774 | |
8c37dfbf | 775 | //if(fDebug > 1) Printf("Analysis event #%5d", (Int_t) fEntry); |
59a5935a | 776 | // Trigger selection |
777 | ||
778 | AliInputEventHandler* inputHandler = (AliInputEventHandler*) | |
779 | ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler()); | |
780 | if(!(inputHandler->IsEventSelected() & AliVEvent::kMB)){ | |
781 | if(inputHandler->InheritsFrom("AliESDInputHandler") && fUsePhysicsSelection){ // PhysicsSelection only with ESD input | |
782 | fh1EvtSelection->Fill(1.); | |
8c37dfbf | 783 | if (fDebug > 2 ) Printf(" Trigger Selection: event REJECTED ... "); |
59a5935a | 784 | PostData(1, fCommonHistList); |
785 | return; | |
786 | } | |
787 | } | |
788 | ||
789 | fESD = dynamic_cast<AliESDEvent*>(InputEvent()); | |
790 | if(!fESD){ | |
8c37dfbf | 791 | if(fDebug>2) Printf("%s:%d ESDEvent not found in the input", (char*)__FILE__,__LINE__); |
59a5935a | 792 | } |
793 | ||
794 | fMCEvent = MCEvent(); | |
795 | if(!fMCEvent){ | |
8c37dfbf | 796 | if(fDebug>2) Printf("%s:%d MCEvent not found in the input", (char*)__FILE__,__LINE__); |
59a5935a | 797 | } |
798 | ||
799 | // get AOD event from input/ouput | |
8c37dfbf | 800 | TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler(); |
801 | if( handler && handler->InheritsFrom("AliAODInputHandler") ) { | |
802 | fAOD = ((AliAODInputHandler*)handler)->GetEvent(); | |
803 | if(fUseAODInputJets) fAODJets = fAOD; | |
804 | if (fDebug > 2) Printf("%s:%d AOD event from input", (char*)__FILE__,__LINE__); | |
59a5935a | 805 | } |
8c37dfbf | 806 | else { |
807 | handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler(); | |
808 | if( handler && handler->InheritsFrom("AliAODHandler") ) { | |
809 | fAOD = ((AliAODHandler*)handler)->GetAOD(); | |
810 | fAODJets = fAOD; | |
811 | if (fDebug > 2) Printf("%s:%d AOD event from output", (char*)__FILE__,__LINE__); | |
812 | } | |
813 | } | |
814 | ||
815 | if(!fAODJets && !fUseAODInputJets){ // case we have AOD in input & output and want jets from output | |
59a5935a | 816 | TObject* outHandler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler(); |
817 | if( outHandler && outHandler->InheritsFrom("AliAODHandler") ) { | |
818 | fAODJets = ((AliAODHandler*)outHandler)->GetAOD(); | |
8c37dfbf | 819 | if (fDebug > 2) Printf("%s:%d jets from output AOD", (char*)__FILE__,__LINE__); |
820 | } | |
59a5935a | 821 | } |
59a5935a | 822 | |
8c37dfbf | 823 | if(fNonStdFile.Length()!=0){ |
824 | // case we have an AOD extension - fetch the jets from the extended output | |
825 | ||
826 | AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()); | |
827 | fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0); | |
828 | if(!fAODExtension){ | |
829 | if(fDebug>2)Printf("AODExtension not found for %s",fNonStdFile.Data()); | |
830 | } | |
59a5935a | 831 | } |
59a5935a | 832 | |
8c37dfbf | 833 | if(!fAOD){ |
834 | Printf("%s:%d AODEvent not found", (char*)__FILE__,__LINE__); | |
835 | return; | |
836 | } | |
837 | if(!fAODJets){ | |
838 | Printf("%s:%d AODEvent with jet branch not found", (char*)__FILE__,__LINE__); | |
839 | return; | |
840 | } | |
841 | ||
842 | ||
843 | // *** vertex cut *** | |
844 | AliAODVertex* primVtx = fAOD->GetPrimaryVertex(); | |
845 | Int_t nTracksPrim = primVtx->GetNContributors(); | |
846 | fh1VertexNContributors->Fill(nTracksPrim); | |
847 | ||
848 | if (fDebug > 2) Printf("%s:%d primary vertex selection: %d", (char*)__FILE__,__LINE__,nTracksPrim); | |
59a5935a | 849 | //if(!nTracksPrim){ |
850 | if(nTracksPrim<fNContributors){ | |
8c37dfbf | 851 | if (fDebug > 2) Printf("%s:%d primary vertex selection: event REJECTED...",(char*)__FILE__,__LINE__); |
59a5935a | 852 | fh1EvtSelection->Fill(3.); |
853 | PostData(1, fCommonHistList); | |
854 | return; | |
855 | } | |
856 | ||
e84e0b8d | 857 | if(fRejectPileup && AliAnalysisHelperJetTasks::IsPileUp()){ |
858 | if (fDebug > 2) Printf("%s:%d SPD pileup : event REJECTED...",(char*)__FILE__,__LINE__); | |
859 | fh1EvtSelection->Fill(6.); | |
860 | PostData(1, fCommonHistList); | |
861 | return; | |
862 | }//pile up rejection | |
863 | ||
864 | ||
59a5935a | 865 | fh1VertexZ->Fill(primVtx->GetZ()); |
866 | ||
867 | if(TMath::Abs(primVtx->GetZ())>fMaxVertexZ){ | |
8c37dfbf | 868 | if (fDebug > 2) Printf("%s:%d primary vertex z = %f: event REJECTED...",(char*)__FILE__,__LINE__,primVtx->GetZ()); |
59a5935a | 869 | fh1EvtSelection->Fill(4.); |
870 | PostData(1, fCommonHistList); | |
871 | return; | |
872 | } | |
873 | ||
874 | TString primVtxName(primVtx->GetName()); | |
875 | ||
876 | if(primVtxName.CompareTo("TPCVertex",TString::kIgnoreCase) == 1){ | |
8c37dfbf | 877 | if (fDebug > 2) Printf("%s:%d primary vertex selection: TPC vertex, event REJECTED...",(char*)__FILE__,__LINE__); |
59a5935a | 878 | fh1EvtSelection->Fill(5.); |
879 | PostData(1, fCommonHistList); | |
880 | return; | |
881 | } | |
882 | ||
8c37dfbf | 883 | if (fDebug > 2) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__); |
59a5935a | 884 | fh1EvtSelection->Fill(0.); |
885 | //___ get MC information __________________________________________________________________ | |
886 | Double_t ptHard = 0.; | |
887 | Double_t nTrials = 1; // trials for MC trigger weight for real data | |
888 | ||
889 | if(fMCEvent){ | |
890 | AliGenEventHeader* genHeader = fMCEvent->GenEventHeader(); | |
891 | if(genHeader){ | |
892 | AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader); | |
893 | AliGenHijingEventHeader* hijingGenHeader = 0x0; | |
894 | ||
895 | if(pythiaGenHeader){ | |
8c37dfbf | 896 | if(fDebug>2) Printf("%s:%d pythiaGenHeader found", (char*)__FILE__,__LINE__); |
59a5935a | 897 | nTrials = pythiaGenHeader->Trials(); |
898 | ptHard = pythiaGenHeader->GetPtHard(); | |
899 | ||
900 | fh1PtHard->Fill(ptHard); | |
901 | fh1PtHardTrials->Fill(ptHard,nTrials); | |
902 | ||
903 | ||
904 | } else { // no pythia, hijing? | |
905 | ||
8c37dfbf | 906 | if(fDebug>2) Printf("%s:%d no pythiaGenHeader found", (char*)__FILE__,__LINE__); |
59a5935a | 907 | |
908 | hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader); | |
909 | if(!hijingGenHeader){ | |
910 | Printf("%s:%d no pythiaGenHeader or hjingGenHeader found", (char*)__FILE__,__LINE__); | |
911 | } else { | |
8c37dfbf | 912 | if(fDebug>2) Printf("%s:%d hijingGenHeader found", (char*)__FILE__,__LINE__); |
59a5935a | 913 | } |
914 | } | |
915 | ||
916 | fh1Trials->Fill("#sum{ntrials}",fAvgTrials); | |
917 | } | |
918 | } | |
919 | ||
920 | //___ fetch jets __________________________________________________________________________ | |
921 | Int_t nJ = GetListOfJets(fJetList); | |
922 | Int_t nJets = 0; | |
923 | if(nJ>=0) nJets = fJetList->GetEntries(); | |
924 | if(fDebug>2){ | |
925 | Printf("%s:%d Selected jets: %d %d",(char*)__FILE__,__LINE__,nJ,nJets); | |
926 | if(nJ != nJets) Printf("%s:%d Mismatch Selected Jets: %d %d",(char*)__FILE__,__LINE__,nJ,nJets); | |
927 | } | |
928 | FillJetProperties(fJetList); | |
929 | FillJetShape(fJetList); | |
fed89a49 | 930 | FillJetShapeUE(fJetList); |
8c37dfbf | 931 | FillFFCorr(fJetList); |
59a5935a | 932 | fJetList->Clear(); |
933 | //Post output data. | |
934 | PostData(1, fCommonHistList); | |
8c37dfbf | 935 | }//UserExec |
59a5935a | 936 | //_________________________________________________________________________________// |
937 | ||
938 | void AliAnalysisTaskJetProperties::Terminate(Option_t *) | |
939 | { | |
940 | // terminated | |
941 | ||
942 | if(fDebug > 1) printf("AliAnalysisTaskJetProperties::Terminate() \n"); | |
943 | } | |
944 | //_________________________________________________________________________________// | |
945 | ||
946 | Int_t AliAnalysisTaskJetProperties::GetListOfJets(TList *list) | |
947 | { | |
948 | //this functionality is motivated by AliAnalysisTaskFragmentationFunction | |
8c37dfbf | 949 | if(fDebug > 2) printf("AliAnalysisTaskJetProperties::GetListOfJets() \n"); |
59a5935a | 950 | // fill list of jets selected according to type |
951 | if(!list){ | |
8c37dfbf | 952 | if(fDebug>2) Printf("%s:%d no input list", (char*)__FILE__,__LINE__); |
59a5935a | 953 | return -1; |
954 | } | |
955 | ||
956 | if(fBranchJets.Length()==0){ | |
957 | Printf("%s:%d no jet branch specified", (char*)__FILE__,__LINE__); | |
8c37dfbf | 958 | if(fDebug>2)fAOD->Print(); |
59a5935a | 959 | return 0; |
960 | } | |
961 | TClonesArray *aodJets = 0; | |
962 | if(fBranchJets.Length()) aodJets = dynamic_cast<TClonesArray*>(fAODJets->FindListObject(fBranchJets.Data())); | |
963 | if(!aodJets) aodJets = dynamic_cast<TClonesArray*>(fAODJets->GetList()->FindObject(fBranchJets.Data())); | |
964 | if(fAODExtension&&!aodJets) aodJets = dynamic_cast<TClonesArray*>(fAODExtension->GetAOD()->FindListObject(fBranchJets.Data())); | |
965 | ||
966 | if(!aodJets){ | |
967 | if(fBranchJets.Length())Printf("%s:%d no jet array with name %s in AOD", (char*)__FILE__,__LINE__,fBranchJets.Data()); | |
8c37dfbf | 968 | if(fDebug>2)fAOD->Print(); |
59a5935a | 969 | return 0; |
970 | } | |
971 | ||
972 | Int_t nJets = 0; | |
973 | for(Int_t ijet=0; ijet<aodJets->GetEntries(); ijet++){ | |
974 | AliAODJet *tmp = dynamic_cast<AliAODJet*>(aodJets->At(ijet)); | |
975 | if(!tmp) continue; | |
976 | if( tmp->Pt() < fJetPtCut ) continue; | |
977 | if( tmp->Eta() < fJetEtaMin || tmp->Eta() > fJetEtaMax)continue; | |
978 | if(fJetRejectType==kReject1Track && tmp->GetRefTracks()->GetEntriesFast()==1)continue;//rejecting 1track jet if... | |
979 | list->Add(tmp); | |
980 | nJets++; | |
981 | }//ij loop | |
982 | list->Sort(); | |
983 | return nJets; | |
984 | } | |
985 | //_________________________________________________________________________________// | |
986 | ||
987 | Int_t AliAnalysisTaskJetProperties::GetListOfJetTracks(TList* list, const AliAODJet* jet) | |
988 | { | |
989 | //this functionality is motivated by AliAnalysisTaskFragmentationFunction | |
8c37dfbf | 990 | if(fDebug > 3) printf("AliAnalysisTaskJetProperties::GetListOfJetTracks() \n"); |
59a5935a | 991 | |
992 | // list of jet tracks from trackrefs | |
993 | Int_t nTracks = jet->GetRefTracks()->GetEntriesFast(); | |
994 | Int_t NoOfTracks=0; | |
995 | for (Int_t itrack=0; itrack<nTracks; itrack++) { | |
996 | if(fTrackType==kTrackUndef){ | |
8c37dfbf | 997 | if(fDebug>3)Printf("%s:%d unknown track type %d in AOD", (char*)__FILE__,__LINE__,kTrackUndef); |
59a5935a | 998 | return 0; |
999 | }//if | |
1000 | else if(fTrackType == kTrackAOD){ | |
1001 | AliAODTrack* trackAod = dynamic_cast<AliAODTrack*>(jet->GetRefTracks()->At(itrack)); | |
1002 | if(!trackAod){ | |
1003 | AliError("expected ref track not found "); | |
1004 | continue; | |
1005 | } | |
1006 | list->Add(trackAod); | |
1007 | NoOfTracks++; | |
1008 | }//if | |
1009 | ||
1010 | else if(fTrackType==kTrackAODMC){ | |
1011 | AliAODMCParticle* trackmc = dynamic_cast<AliAODMCParticle*>(jet->GetRefTracks()->At(itrack)); | |
1012 | if(!trackmc){ | |
1013 | AliError("expected ref trackmc not found "); | |
1014 | continue; | |
1015 | } | |
1016 | list->Add(trackmc); | |
1017 | NoOfTracks++; | |
1018 | }//if | |
1019 | ||
1020 | else if (fTrackType==kTrackKine){ | |
1021 | AliVParticle* trackkine = dynamic_cast<AliVParticle*>(jet->GetRefTracks()->At(itrack)); | |
1022 | if(!trackkine){ | |
1023 | AliError("expected ref trackkine not found "); | |
1024 | continue; | |
1025 | } | |
1026 | list->Add(trackkine); | |
1027 | NoOfTracks++; | |
1028 | }//if | |
1029 | }//itrack loop | |
1030 | list->Sort(); | |
1031 | return NoOfTracks; | |
1032 | }//initial loop | |
1033 | //_________________________________________________________________________________// | |
1034 | ||
1035 | void AliAnalysisTaskJetProperties::FillJetProperties(TList *jetlist){ | |
1036 | //filling up the histograms jets and tracks inside jet | |
8c37dfbf | 1037 | if(fDebug > 2) printf("AliAnalysisTaskJetProperties::FillJetProperties() \n"); |
59a5935a | 1038 | |
1039 | for(Int_t iJet=0; iJet < jetlist->GetEntries(); iJet++){ | |
1040 | Float_t JetPt;Float_t JetPhi;Float_t JetEta;Float_t JetE; | |
1041 | AliAODJet *jet = dynamic_cast<AliAODJet*>(jetlist->At(iJet)); | |
1042 | if(!jet)continue; | |
1043 | JetEta = jet->Eta(); | |
1044 | JetPhi = jet->Phi(); | |
1045 | JetPt = jet->Pt(); | |
1046 | JetE = jet->E(); | |
1047 | fh2EtaJet ->Fill(JetPt,JetEta); | |
1048 | fh2PhiJet ->Fill(JetPt,JetPhi); | |
1049 | fh2PtJet ->Fill(JetPt,JetPt); | |
1050 | fh1PtJet ->Fill(JetPt); | |
8c37dfbf | 1051 | fTrackListJet->Clear(); |
fed89a49 | 1052 | Int_t nJT = GetListOfJetTracks(fTrackListJet,jet); |
59a5935a | 1053 | Int_t nJetTracks = 0; |
fed89a49 | 1054 | if(nJT>=0) nJetTracks = fTrackListJet->GetEntries(); |
59a5935a | 1055 | if(fDebug>2){ |
1056 | Printf("%s:%d Jet tracks: %d %d",(char*)__FILE__,__LINE__,nJT,nJetTracks); | |
1057 | if(nJT != nJetTracks) Printf("%s:%d Mismatch Jet Tracks: %d %d",(char*)__FILE__,__LINE__,nJT,nJetTracks); | |
1058 | } | |
1059 | ||
fed89a49 | 1060 | fh2NtracksJet ->Fill(JetPt,fTrackListJet->GetEntries()); |
1061 | fProNtracksJet ->Fill(JetPt,fTrackListJet->GetEntries()); | |
59a5935a | 1062 | |
fed89a49 | 1063 | for (Int_t j =0; j< fTrackListJet->GetEntries(); j++){ |
59a5935a | 1064 | if(fTrackType==kTrackUndef)continue; |
1065 | Float_t TrackEta=-99.0; Float_t TrackPt=-99.0; Float_t TrackPhi=-99.0; | |
8c37dfbf | 1066 | Float_t FF=-99.0; Float_t DelEta=-99.0; Float_t DelPhi=-99.0; |
1067 | Float_t DelR=-99.0; Float_t AreaJ=-99.0; Float_t Ksi=-99.0; | |
59a5935a | 1068 | if(fTrackType==kTrackAOD){ |
fed89a49 | 1069 | AliAODTrack *trackaod = dynamic_cast<AliAODTrack*>(fTrackListJet->At(j)); |
59a5935a | 1070 | if(!trackaod)continue; |
1071 | TrackEta = trackaod->Eta(); | |
1072 | TrackPhi = trackaod->Phi(); | |
1073 | TrackPt = trackaod->Pt(); | |
1074 | }//if kTrackAOD | |
1075 | else if(fTrackType==kTrackAODMC){ | |
fed89a49 | 1076 | AliAODMCParticle* trackmc = dynamic_cast<AliAODMCParticle*>(fTrackListJet->At(j)); |
59a5935a | 1077 | if(!trackmc)continue; |
1078 | TrackEta = trackmc->Eta(); | |
1079 | TrackPhi = trackmc->Phi(); | |
1080 | TrackPt = trackmc->Pt(); | |
1081 | }//if kTrackAODMC | |
1082 | else if(fTrackType==kTrackKine){ | |
fed89a49 | 1083 | AliVParticle* trackkine = dynamic_cast<AliVParticle*>(fTrackListJet->At(j)); |
59a5935a | 1084 | if(!trackkine)continue; |
1085 | TrackEta = trackkine->Eta(); | |
1086 | TrackPhi = trackkine->Phi(); | |
1087 | TrackPt = trackkine->Pt(); | |
1088 | }//kTrackKine | |
1089 | if(JetPt)FF = TrackPt/JetPt; | |
8c37dfbf | 1090 | if(FF)Ksi = TMath::Log(1./FF); |
59a5935a | 1091 | DelEta = TMath::Abs(JetEta - TrackEta); |
1092 | DelPhi = TMath::Abs(JetPhi - TrackPhi); | |
448afeb9 | 1093 | if(DelPhi>TMath::Pi())DelPhi = TMath::Abs(DelPhi-TMath::TwoPi()); |
59a5935a | 1094 | DelR = TMath::Sqrt(DelEta*DelEta + DelPhi*DelPhi); |
1095 | AreaJ = TMath::Pi()*DelR*DelR; | |
1096 | fh2EtaTrack ->Fill(JetPt,TrackEta); | |
1097 | fh2PhiTrack ->Fill(JetPt,TrackPhi); | |
1098 | fh2PtTrack ->Fill(JetPt,TrackPt); | |
1099 | fh2FF ->Fill(JetPt,FF); | |
8c37dfbf | 1100 | fh2Ksi ->Fill(JetPt,Ksi); |
59a5935a | 1101 | fh2DelEta ->Fill(JetPt,DelEta); |
1102 | fh2DelPhi ->Fill(JetPt,DelPhi); | |
1103 | fh2DelR ->Fill(JetPt,DelR); | |
1104 | }//track loop | |
fed89a49 | 1105 | fTrackListJet->Clear(); |
59a5935a | 1106 | }//iJet loop |
1107 | }//FillJetProperties | |
1108 | //_________________________________________________________________________________// | |
8c37dfbf | 1109 | void AliAnalysisTaskJetProperties::FillFFCorr(TList *jetlist){ |
1110 | //filling up the histograms jets and tracks inside jet | |
1111 | if(fDebug > 2) printf("AliAnalysisTaskJetProperties::FillFFCorr() \n"); | |
1112 | ||
1113 | for(Int_t iJet=0; iJet < jetlist->GetEntries(); iJet++){ | |
1114 | Float_t JetPt;Float_t JetTheta; | |
1115 | AliAODJet *jet = dynamic_cast<AliAODJet*>(jetlist->At(iJet)); | |
1116 | if(!jet)continue; | |
1117 | JetTheta = jet->Theta(); | |
1118 | JetPt = jet->Pt(); | |
1119 | fh1CorrJetPt -> Fill(JetPt); | |
1120 | ||
1121 | fTrackListJet->Clear(); | |
1122 | Int_t nJT = GetListOfJetTracks(fTrackListJet,jet); | |
1123 | Int_t nJetTracks = 0; | |
1124 | if(nJT>=0) nJetTracks = fTrackListJet->GetEntries(); | |
1125 | if(fDebug>2){ | |
1126 | Printf("%s:%d Jet tracks: %d %d",(char*)__FILE__,__LINE__,nJT,nJetTracks); | |
1127 | if(nJT != nJetTracks) Printf("%s:%d Mismatch Jet Tracks: %d %d",(char*)__FILE__,__LINE__,nJT,nJetTracks); | |
1128 | }//fDebug | |
1129 | ||
1130 | Float_t TotPt = 0.; | |
1131 | for (Int_t j =0; j< fTrackListJet->GetEntries(); j++){ | |
1132 | if(fTrackType==kTrackUndef)continue; | |
1133 | Float_t TrackPt1=-99.0; Float_t TrackPt2=-99.0; | |
1134 | Float_t FF1=-99.0; Float_t FF2=-99.0; | |
1135 | Float_t Ksi1=-99.0; Float_t Ksi2=-99.0; | |
1136 | Float_t TrackTheta1=0.0; Float_t TrackTheta2=0.0; | |
1137 | Float_t DelTheta1=0.0; Float_t DelTheta2=0.0; | |
1138 | Float_t jT1=-99.0; Float_t jT2=-99.0; | |
1139 | if(fTrackType==kTrackAOD){ | |
1140 | AliAODTrack *trackaod = dynamic_cast<AliAODTrack*>(fTrackListJet->At(j)); | |
1141 | if(!trackaod)continue; | |
1142 | TrackTheta1 = trackaod->Theta(); | |
1143 | TrackPt1 = trackaod->Pt(); | |
1144 | }//if kTrackAOD | |
1145 | else if(fTrackType==kTrackAODMC){ | |
1146 | AliAODMCParticle* trackmc = dynamic_cast<AliAODMCParticle*>(fTrackListJet->At(j)); | |
1147 | if(!trackmc)continue; | |
1148 | TrackTheta1 = trackmc->Theta(); | |
1149 | TrackPt1 = trackmc->Pt(); | |
1150 | }//if kTrackAODMC | |
1151 | else if(fTrackType==kTrackKine){ | |
1152 | AliVParticle* trackkine = dynamic_cast<AliVParticle*>(fTrackListJet->At(j)); | |
1153 | if(!trackkine)continue; | |
1154 | TrackTheta1 = trackkine->Theta(); | |
1155 | TrackPt1 = trackkine->Pt(); | |
1156 | }//kTrackKine | |
1157 | TotPt += TrackPt1; | |
1158 | if(JetPt)FF1 = TrackPt1/JetPt; | |
1159 | if(FF1)Ksi1 = TMath::Log(1./FF1); | |
1160 | DelTheta1 = TMath::Abs(JetTheta - TrackTheta1); | |
1161 | jT1 = TrackPt1 * TMath::Sin(DelTheta1); | |
1162 | fh2CorrPtTrack1 ->Fill(JetPt,TrackPt1); | |
1163 | fh2CorrFF1 ->Fill(JetPt,FF1); | |
1164 | fh2CorrKsi1 ->Fill(JetPt,Ksi1); | |
1165 | fh2CorrjT1 ->Fill(JetPt,jT1); | |
1166 | for (Int_t jj =j+1; jj< fTrackListJet->GetEntries(); jj++){ | |
1167 | if(fTrackType==kTrackUndef)continue; | |
1168 | if(fTrackType==kTrackAOD){ | |
1169 | AliAODTrack *trackaod2 = dynamic_cast<AliAODTrack*>(fTrackListJet->At(jj)); | |
1170 | if(!trackaod2)continue; | |
1171 | TrackTheta2 = trackaod2->Theta(); | |
1172 | TrackPt2 = trackaod2->Pt(); | |
1173 | }//if kTrackAOD | |
1174 | else if(fTrackType==kTrackAODMC){ | |
1175 | AliAODMCParticle* trackmc2 = dynamic_cast<AliAODMCParticle*>(fTrackListJet->At(jj)); | |
1176 | if(!trackmc2)continue; | |
1177 | TrackTheta2 = trackmc2->Theta(); | |
1178 | TrackPt2 = trackmc2->Pt(); | |
1179 | }//if kTrackAODMC | |
1180 | else if(fTrackType==kTrackKine){ | |
1181 | AliVParticle* trackkine2 = dynamic_cast<AliVParticle*>(fTrackListJet->At(jj)); | |
1182 | if(!trackkine2)continue; | |
1183 | TrackTheta2 = trackkine2->Theta(); | |
1184 | TrackPt2 = trackkine2->Pt(); | |
1185 | }//kTrackKine | |
1186 | if(JetPt)FF2 = TrackPt2/JetPt; | |
1187 | if(FF2)Ksi2 = TMath::Log(1./FF2); | |
1188 | DelTheta2 = TMath::Abs(JetTheta - TrackTheta2); | |
1189 | jT2 = TrackPt2 * TMath::Sin(DelTheta2); | |
1190 | Float_t ptmin=10.; Float_t ptmax=20.0; | |
1191 | for(Int_t iBin=0; iBin<6; iBin++){ | |
1192 | if(iBin == 0)ptmin=10.; ptmax=20.; | |
1193 | if(iBin == 1)ptmin=20.; ptmax=30.; | |
1194 | if(iBin == 2)ptmin=30.; ptmax=40.; | |
1195 | if(iBin == 3)ptmin=40.; ptmax=60.; | |
1196 | if(iBin == 4)ptmin=60.; ptmax=80.; | |
1197 | if(iBin == 5)ptmin=80.; ptmax=100.; | |
1198 | if(JetPt>ptmin && JetPt <= ptmax){ | |
1199 | fh2CorrPt1Pt2[iBin] ->Fill(TrackPt1,TrackPt2); | |
1200 | fh2CorrZ1Z2[iBin] ->Fill(FF1,FF2); | |
1201 | fh2CorrKsi1Ksi2[iBin]->Fill(Ksi1,Ksi2); | |
1202 | fh2CorrjT1jT2[iBin] ->Fill(jT1,jT2); | |
1203 | }//if loop | |
1204 | }//iBin loop | |
1205 | }//inside track loop | |
1206 | }//outer track loop | |
1207 | Float_t diff_JetPt_TrkPtSum = JetPt - TotPt; | |
1208 | fh1JetPtvsTrkSum->Fill(diff_JetPt_TrkPtSum); | |
1209 | TotPt = 0.; | |
1210 | fTrackListJet->Clear(); | |
1211 | }//iJet loop | |
1212 | }//FillFFCorr | |
1213 | //_________________________________________________________________________________// | |
59a5935a | 1214 | |
1215 | void AliAnalysisTaskJetProperties::FillJetShape(TList *jetlist){ | |
1216 | //filling up the histograms | |
8c37dfbf | 1217 | if(fDebug > 2) printf("AliAnalysisTaskJetProperties::FillJetShape() \n"); |
59a5935a | 1218 | Float_t JetEta; Float_t JetPhi; Float_t JetPt; |
fed89a49 | 1219 | AliAODJet *jet = dynamic_cast<AliAODJet*>(jetlist->At(0));//Leading jet only |
59a5935a | 1220 | if(jet){ |
1221 | JetEta = jet->Eta(); | |
1222 | JetPhi = jet->Phi(); | |
1223 | JetPt = jet->Pt(); | |
1224 | fh1PtLeadingJet->Fill(JetPt); | |
efabdd32 | 1225 | Float_t NchSumA[50] = {0.}; |
1226 | Float_t PtSumA[50] = {0.}; | |
1227 | Float_t delRPtSum80pc = 0; | |
1228 | Float_t delRNtrkSum80pc = 0; | |
1229 | Float_t PtSumDiffShape[10] = {0.0}; | |
1230 | Float_t PtSumIntShape[10] = {0.0}; | |
1231 | Int_t kNbinsR = 10; | |
8c37dfbf | 1232 | fTrackListJet->Clear(); |
fed89a49 | 1233 | Int_t nJT = GetListOfJetTracks(fTrackListJet,jet); |
59a5935a | 1234 | Int_t nJetTracks = 0; |
fed89a49 | 1235 | if(nJT>=0) nJetTracks = fTrackListJet->GetEntries(); |
8c37dfbf | 1236 | if(fDebug>3){ |
59a5935a | 1237 | Printf("%s:%d Jet tracks: %d %d",(char*)__FILE__,__LINE__,nJT,nJetTracks); |
1238 | if(nJT != nJetTracks) Printf("%s:%d Mismatch Jet Tracks: %d %d",(char*)__FILE__,__LINE__,nJT,nJetTracks); | |
1239 | } | |
1240 | fh2NtracksLeadingJet->Fill(JetPt,nJetTracks); | |
1241 | fProNtracksLeadingJet->Fill(JetPt,nJetTracks); | |
1242 | Int_t *index = new Int_t [nJetTracks];//dynamic array containing index | |
1243 | Float_t *delRA = new Float_t [nJetTracks];//dynamic array containing delR | |
1244 | Float_t *delEtaA = new Float_t [nJetTracks];//dynamic array containing delEta | |
1245 | Float_t *delPhiA = new Float_t [nJetTracks];//dynamic array containing delPhi | |
1246 | Float_t *trackPtA = new Float_t [nJetTracks];//dynamic array containing pt-track | |
1247 | Float_t *trackEtaA = new Float_t [nJetTracks];//dynamic array containing eta-track | |
1248 | Float_t *trackPhiA = new Float_t [nJetTracks];//dynamic array containing phi-track | |
1249 | for(Int_t ii=0; ii<nJetTracks; ii++){ | |
1250 | index[ii] = 0; | |
1251 | delRA[ii] = 0.; | |
1252 | delEtaA[ii] = 0.; | |
1253 | delPhiA[ii] = 0.; | |
1254 | trackPtA[ii] = 0.; | |
1255 | trackEtaA[ii] = 0.; | |
1256 | trackPhiA[ii] = 0.; | |
1257 | }//ii loop | |
1258 | ||
1259 | for (Int_t j =0; j< nJetTracks; j++){ | |
1260 | if(fTrackType==kTrackUndef)continue; | |
1261 | ||
1262 | Float_t TrackEta=-99.0; Float_t TrackPt=-99.0; Float_t TrackPhi=-99.0; | |
1263 | Float_t DelEta=-99.0; Float_t DelPhi=-99.0; Float_t DelR=-99.0; Float_t AreaJ=-99.0; | |
1264 | ||
1265 | if(fTrackType==kTrackAOD){ | |
fed89a49 | 1266 | AliAODTrack *trackaod = dynamic_cast<AliAODTrack*>(fTrackListJet->At(j)); |
59a5935a | 1267 | if(!trackaod)continue; |
1268 | TrackEta = trackaod->Eta(); | |
1269 | TrackPhi = trackaod->Phi(); | |
1270 | TrackPt = trackaod->Pt(); | |
1271 | }//if kTrackAOD | |
1272 | else if(fTrackType==kTrackAODMC){ | |
fed89a49 | 1273 | AliAODMCParticle* trackmc = dynamic_cast<AliAODMCParticle*>(fTrackListJet->At(j)); |
59a5935a | 1274 | if(!trackmc)continue; |
1275 | TrackEta = trackmc->Eta(); | |
1276 | TrackPhi = trackmc->Phi(); | |
1277 | TrackPt = trackmc->Pt(); | |
1278 | }//if kTrackAODMC | |
1279 | else if(fTrackType==kTrackKine){ | |
fed89a49 | 1280 | AliVParticle* trackkine = dynamic_cast<AliVParticle*>(fTrackListJet->At(j)); |
59a5935a | 1281 | if(!trackkine)continue; |
1282 | TrackEta = trackkine->Eta(); | |
1283 | TrackPhi = trackkine->Phi(); | |
1284 | TrackPt = trackkine->Pt(); | |
1285 | }//if kTrackKine | |
1286 | ||
1287 | DelEta = TMath::Abs(JetEta - TrackEta); | |
1288 | DelPhi = TMath::Abs(JetPhi - TrackPhi); | |
efabdd32 | 1289 | if(DelPhi>TMath::Pi())DelPhi = TMath::Abs(DelPhi-TMath::TwoPi()); |
59a5935a | 1290 | DelR = TMath::Sqrt(DelEta*DelEta + DelPhi*DelPhi); |
1291 | AreaJ = TMath::Pi()*DelR*DelR; | |
1292 | ||
1293 | fh2AreaCh ->Fill(JetPt,AreaJ); | |
1294 | fProAreaCh->Fill(JetPt,AreaJ); | |
1295 | delRA[j] = DelR; | |
1296 | delEtaA[j] = DelEta; | |
1297 | delPhiA[j] = DelPhi; | |
1298 | trackPtA[j] = TrackPt; | |
1299 | trackEtaA[j] = TrackEta; | |
1300 | trackPhiA[j] = TrackPhi; | |
1301 | ||
efabdd32 | 1302 | //calculating diff and integrated jet shapes |
1303 | Float_t kDeltaR = 0.1; | |
1304 | Float_t RMin = kDeltaR/2.0; | |
1305 | Float_t RMax = kDeltaR/2.0; | |
1306 | Float_t tmpR = 0.05; | |
1307 | for(Int_t ii1=0; ii1<kNbinsR;ii1++){ | |
1308 | if((DelR > (tmpR-RMin)) && (DelR <=(tmpR+RMax)))PtSumDiffShape[ii1]+= TrackPt; | |
1309 | if(DelR>0.0 && DelR <=(tmpR+RMax))PtSumIntShape[ii1]+= TrackPt; | |
1310 | tmpR += 0.1; | |
1311 | }//ii1 loop | |
1312 | ||
59a5935a | 1313 | for(Int_t ibin=1; ibin<=50; ibin++){ |
1314 | Float_t xlow = 0.02*(ibin-1); | |
1315 | Float_t xup = 0.02*ibin; | |
1316 | if( xlow <= DelR && DelR < xup){ | |
1317 | NchSumA[ibin-1]++; | |
1318 | PtSumA[ibin-1]+= TrackPt; | |
1319 | }//if loop | |
1320 | }//for ibin loop | |
1321 | }//track loop | |
fed89a49 | 1322 | fTrackListJet->Clear(); |
efabdd32 | 1323 | |
1324 | //--------------------- | |
1325 | Float_t tmp1R = 0.05; | |
1326 | for(Int_t jj1=0; jj1<kNbinsR;jj1++){ | |
1327 | if(JetPt>20 && JetPt<=100){ | |
1328 | fProDiffJetShape->Fill(tmp1R,PtSumDiffShape[jj1]/JetPt); | |
1329 | fProIntJetShape ->Fill(tmp1R,PtSumIntShape[jj1]/JetPt); | |
1330 | } | |
1331 | Float_t jetPtMin0=20.0; Float_t jetPtMax0=30.0; | |
fed89a49 | 1332 | for(Int_t k=0; k<13; k++){ |
1333 | if(k==0) {jetPtMin0=20.0;jetPtMax0=25.0;} | |
1334 | if(k==1) {jetPtMin0=25.0;jetPtMax0=30.0;} | |
1335 | if(k==2) {jetPtMin0=20.0;jetPtMax0=30.0;} | |
1336 | if(k==3) {jetPtMin0=30.0;jetPtMax0=35.0;} | |
1337 | if(k==4) {jetPtMin0=35.0;jetPtMax0=40.0;} | |
1338 | if(k==5) {jetPtMin0=30.0;jetPtMax0=40.0;} | |
1339 | if(k==6) {jetPtMin0=40.0;jetPtMax0=50.0;} | |
1340 | if(k==7) {jetPtMin0=50.0;jetPtMax0=60.0;} | |
1341 | if(k==8) {jetPtMin0=40.0;jetPtMax0=60.0;} | |
1342 | if(k==9) {jetPtMin0=60.0;jetPtMax0=70.0;} | |
1343 | if(k==10){jetPtMin0=70.0;jetPtMax0=80.0;} | |
1344 | if(k==11){jetPtMin0=60.0;jetPtMax0=80.0;} | |
1345 | if(k==12){jetPtMin0=80.0;jetPtMax0=100.0;} | |
efabdd32 | 1346 | if(JetPt>jetPtMin0 && JetPt<=jetPtMax0){ |
1347 | fProDiffJetShapeA[k]->Fill(tmp1R,PtSumDiffShape[jj1]/JetPt); | |
1348 | fProIntJetShapeA[k] ->Fill(tmp1R,PtSumIntShape[jj1]/JetPt); | |
1349 | }//if | |
1350 | }//k loop | |
1351 | tmp1R +=0.1; | |
1352 | }//jj1 loop | |
1353 | //----------------------// | |
59a5935a | 1354 | Float_t PtSum = 0; |
1355 | Int_t NtrkSum = 0; | |
1356 | Bool_t iflagPtSum = kFALSE; | |
1357 | Bool_t iflagNtrkSum = kFALSE; | |
1358 | TMath::Sort(nJetTracks,delRA,index,0); | |
1359 | for(Int_t ii=0; ii<nJetTracks; ii++){ | |
1360 | NtrkSum ++; | |
1361 | PtSum += trackPtA[index[ii]]; | |
1362 | /* | |
1363 | cout << index[ii] << "\t" << | |
1364 | delR[ii] << "\t" << | |
1365 | delEta[ii]<< "\t" << | |
1366 | delPhi[ii]<< "\t" << | |
1367 | trackPt[ii]<< "\t" << | |
1368 | trackEta[ii]<< "\t" << | |
1369 | trackPhi[ii]<< "\t DelR " << | |
1370 | delR[index[ii]] << endl; | |
1371 | */ | |
1372 | if(!iflagNtrkSum){ | |
1373 | if((Float_t)NtrkSum/(Float_t)nJetTracks > 0.79){ | |
1374 | delRNtrkSum80pc = delRA[index[ii]]; | |
1375 | iflagNtrkSum = kTRUE; | |
1376 | }//if NtrkSum | |
1377 | }//if iflag | |
1378 | if(!iflagPtSum){ | |
1379 | if(PtSum/JetPt >= 0.8000){ | |
1380 | delRPtSum80pc = delRA[index[ii]]; | |
1381 | iflagPtSum = kTRUE; | |
1382 | }//if PtSum | |
1383 | }//if iflag | |
1384 | }//track loop 2nd | |
1385 | delete [] index; | |
1386 | delete [] delRA; | |
1387 | delete [] delEtaA; | |
1388 | delete [] delPhiA; | |
1389 | delete [] trackPtA; | |
1390 | delete [] trackEtaA; | |
1391 | delete [] trackPhiA; | |
1392 | fh2DelR80pcNch ->Fill(JetPt,delRNtrkSum80pc); | |
1393 | fProDelR80pcNch->Fill(JetPt,delRNtrkSum80pc); | |
1394 | fh2DelR80pcPt ->Fill(JetPt,delRPtSum80pc); | |
1395 | fProDelR80pcPt ->Fill(JetPt,delRPtSum80pc); | |
1396 | for(Int_t ibin=0; ibin<50; ibin++){ | |
1397 | Float_t iR = 0.02*ibin + 0.01; | |
1398 | fh3PtDelRNchSum->Fill(JetPt,iR,NchSumA[ibin]); | |
1399 | fh3PtDelRPtSum ->Fill(JetPt,iR,PtSumA[ibin]); | |
1400 | Float_t jetPtMin=20.0; Float_t jetPtMax=30.0; | |
fed89a49 | 1401 | for(Int_t k=0; k<13; k++){ |
1402 | if(k==0) {jetPtMin=20.0;jetPtMax=25.0;} | |
1403 | if(k==1) {jetPtMin=25.0;jetPtMax=30.0;} | |
1404 | if(k==2) {jetPtMin=20.0;jetPtMax=30.0;} | |
1405 | if(k==3) {jetPtMin=30.0;jetPtMax=35.0;} | |
1406 | if(k==4) {jetPtMin=35.0;jetPtMax=40.0;} | |
1407 | if(k==5) {jetPtMin=30.0;jetPtMax=40.0;} | |
1408 | if(k==6) {jetPtMin=40.0;jetPtMax=50.0;} | |
1409 | if(k==7) {jetPtMin=50.0;jetPtMax=60.0;} | |
1410 | if(k==8) {jetPtMin=40.0;jetPtMax=60.0;} | |
1411 | if(k==9) {jetPtMin=60.0;jetPtMax=70.0;} | |
1412 | if(k==10){jetPtMin=70.0;jetPtMax=80.0;} | |
1413 | if(k==11){jetPtMin=60.0;jetPtMax=80.0;} | |
1414 | if(k==12){jetPtMin=80.0;jetPtMax=100.0;} | |
59a5935a | 1415 | if(JetPt>jetPtMin && JetPt<jetPtMax){ |
1416 | fProDelRNchSum[k]->Fill(iR,NchSumA[ibin]); | |
1417 | fProDelRPtSum[k]->Fill(iR,PtSumA[ibin]); | |
1418 | }//if | |
1419 | }//k loop | |
1420 | }//ibin loop | |
1421 | }//if(jet) | |
1422 | }//FillJetShape() | |
1423 | //_________________________________________________________________________________// | |
1424 | ||
fed89a49 | 1425 | void AliAnalysisTaskJetProperties::FillJetShapeUE(TList *jetlist){ |
1426 | //filling up the histograms | |
8c37dfbf | 1427 | if(fDebug > 2) printf("AliAnalysisTaskJetProperties::FillJetShape() \n"); |
fed89a49 | 1428 | AliAODJet *jet = dynamic_cast<AliAODJet*>(jetlist->At(0));//Leading jet only |
1429 | if(jet){ | |
1430 | Double_t jetMom[3]; | |
1431 | jet->PxPyPz(jetMom); | |
1432 | ||
1433 | TVector3 jet3mom(jetMom); | |
1434 | // Rotate phi and keep eta unchanged | |
1435 | ||
1436 | const Double_t alpha = TMath::Pi()/2.; | |
1437 | Double_t etaTilted = jet3mom.Eta(); | |
1438 | Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha; | |
1439 | if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi(); | |
1440 | ||
1441 | Double_t JetPt = jet->Pt(); | |
1442 | ||
1443 | Float_t NchSumA[50] = {0.}; | |
1444 | Float_t PtSumA[50] = {0.}; | |
1445 | Float_t delRPtSum80pc = 0; | |
1446 | Float_t delRNtrkSum80pc = 0; | |
1447 | Float_t PtSumDiffShape[10] = {0.0}; | |
1448 | Float_t PtSumIntShape[10] = {0.0}; | |
1449 | Int_t kNbinsR = 10; | |
1450 | ||
1451 | //Int_t nTracks = GetListOfTracks(fTrackList,fTrackType); | |
8c37dfbf | 1452 | fTrackList->Clear(); |
fed89a49 | 1453 | GetListOfTracks(fTrackList,fTrackType); |
1454 | Double_t sumPtPerp = 0; | |
8c37dfbf | 1455 | //if(fDebug > 100) printf("Cone radius for bckg. = %f Track type = %d\n",fJetRadius, fTrackType); |
1456 | fTrackListUE->Clear(); | |
fed89a49 | 1457 | GetTracksTiltedwrpJetAxis(alpha, fTrackList, fTrackListUE,jet,fJetRadius,sumPtPerp); |
1458 | fTrackList->Clear(); | |
1459 | fh1PtSumInJetConeUE->Fill(sumPtPerp); | |
fed89a49 | 1460 | Int_t nTracksUE = fTrackListUE->GetEntries(); |
1461 | fh2NtracksLeadingJetUE->Fill(JetPt,nTracksUE); | |
1462 | fProNtracksLeadingJetUE->Fill(JetPt,nTracksUE); | |
1463 | ||
1464 | Int_t *index = new Int_t [nTracksUE];//dynamic array containing index | |
1465 | Float_t *delRA = new Float_t [nTracksUE];//dynamic array containing delR | |
1466 | Float_t *delEtaA = new Float_t [nTracksUE];//dynamic array containing delEta | |
1467 | Float_t *delPhiA = new Float_t [nTracksUE];//dynamic array containing delPhi | |
1468 | Float_t *trackPtA = new Float_t [nTracksUE];//dynamic array containing pt-track | |
1469 | Float_t *trackEtaA = new Float_t [nTracksUE];//dynamic array containing eta-track | |
1470 | Float_t *trackPhiA = new Float_t [nTracksUE];//dynamic array containing phi-track | |
1471 | for(Int_t ii=0; ii<nTracksUE; ii++){ | |
1472 | index[ii] = 0; | |
1473 | delRA[ii] = 0.; | |
1474 | delEtaA[ii] = 0.; | |
1475 | delPhiA[ii] = 0.; | |
1476 | trackPtA[ii] = 0.; | |
1477 | trackEtaA[ii] = 0.; | |
1478 | trackPhiA[ii] = 0.; | |
1479 | }//ii loop | |
1480 | ||
1481 | for (Int_t j =0; j< nTracksUE; j++){ | |
1482 | if(fTrackType==kTrackUndef)continue; | |
1483 | ||
1484 | Float_t TrackEta=-99.0; Float_t TrackPt=-99.0; Float_t TrackPhi=-99.0; | |
1485 | Float_t DelEta=-99.0; Float_t DelPhi=-99.0; Float_t DelR=-99.0; Float_t AreaJ=-99.0; | |
1486 | ||
1487 | if(fTrackType==kTrackAOD){ | |
1488 | AliAODTrack *trackaod = dynamic_cast<AliAODTrack*>(fTrackListUE->At(j)); | |
1489 | if(!trackaod)continue; | |
1490 | TrackEta = trackaod->Eta(); | |
1491 | TrackPhi = trackaod->Phi(); | |
1492 | TrackPt = trackaod->Pt(); | |
8c37dfbf | 1493 | //if(fDebug > 100) printf("FillJetShapeUE itrack, trackPt %d, %f\n",j,TrackPt); |
fed89a49 | 1494 | }//if kTrackAOD |
1495 | else if(fTrackType==kTrackAODMC){ | |
1496 | AliAODMCParticle* trackmc = dynamic_cast<AliAODMCParticle*>(fTrackListUE->At(j)); | |
1497 | if(!trackmc)continue; | |
1498 | TrackEta = trackmc->Eta(); | |
1499 | TrackPhi = trackmc->Phi(); | |
1500 | TrackPt = trackmc->Pt(); | |
8c37dfbf | 1501 | //if(fDebug > 100) printf("FillJetShapeUE itrack, trackPt %d, %f\n",j,TrackPt); |
fed89a49 | 1502 | }//if kTrackAODMC |
1503 | else if(fTrackType==kTrackKine){ | |
1504 | AliVParticle* trackkine = dynamic_cast<AliVParticle*>(fTrackListUE->At(j)); | |
1505 | if(!trackkine)continue; | |
1506 | TrackEta = trackkine->Eta(); | |
1507 | TrackPhi = trackkine->Phi(); | |
1508 | TrackPt = trackkine->Pt(); | |
8c37dfbf | 1509 | //if(fDebug > 100) printf("FillJetShapeUE itrack, trackPt %d, %f\n",j,TrackPt); |
fed89a49 | 1510 | }//if kTrackKine |
1511 | ||
1512 | DelEta = TMath::Abs(etaTilted - TrackEta); | |
1513 | DelPhi = TMath::Abs(phiTilted - TrackPhi); | |
1514 | if(DelPhi>TMath::Pi())DelPhi = TMath::Abs(DelPhi-TMath::TwoPi()); | |
1515 | DelR = TMath::Sqrt(DelEta*DelEta + DelPhi*DelPhi); | |
1516 | AreaJ = TMath::Pi()*DelR*DelR; | |
1517 | ||
1518 | fh2AreaChUE ->Fill(JetPt,AreaJ); | |
1519 | fProAreaChUE->Fill(JetPt,AreaJ); | |
1520 | ||
1521 | delRA[j] = DelR; | |
1522 | delEtaA[j] = DelEta; | |
1523 | delPhiA[j] = DelPhi; | |
1524 | trackPtA[j] = TrackPt; | |
1525 | trackEtaA[j] = TrackEta; | |
1526 | trackPhiA[j] = TrackPhi; | |
1527 | ||
1528 | //calculating diff and integrated jet shapes | |
1529 | Float_t kDeltaR = 0.1; | |
1530 | Float_t RMin = kDeltaR/2.0; | |
1531 | Float_t RMax = kDeltaR/2.0; | |
1532 | Float_t tmpR = 0.05; | |
1533 | for(Int_t ii1=0; ii1<kNbinsR;ii1++){ | |
1534 | if((DelR > (tmpR-RMin)) && (DelR <=(tmpR+RMax)))PtSumDiffShape[ii1]+= TrackPt; | |
1535 | if(DelR>0.0 && DelR <=(tmpR+RMax))PtSumIntShape[ii1]+= TrackPt; | |
1536 | tmpR += 0.1; | |
1537 | }//ii1 loop | |
1538 | ||
1539 | for(Int_t ibin=1; ibin<=50; ibin++){ | |
1540 | Float_t xlow = 0.02*(ibin-1); | |
1541 | Float_t xup = 0.02*ibin; | |
1542 | if( xlow <= DelR && DelR < xup){ | |
1543 | NchSumA[ibin-1]++; | |
1544 | PtSumA[ibin-1]+= TrackPt; | |
1545 | }//if loop | |
1546 | }//for ibin loop | |
1547 | }//track loop | |
1548 | fTrackListUE->Clear(); | |
1549 | ||
1550 | //--------------------- | |
1551 | Float_t tmp1R = 0.05; | |
1552 | for(Int_t jj1=0; jj1<kNbinsR;jj1++){ | |
1553 | if(JetPt>20 && JetPt<=100){ | |
1554 | fProDiffJetShapeUE->Fill(tmp1R,PtSumDiffShape[jj1]/JetPt); | |
1555 | fProIntJetShapeUE ->Fill(tmp1R,PtSumIntShape[jj1]/JetPt); | |
1556 | } | |
1557 | Float_t jetPtMin0=20.0; Float_t jetPtMax0=30.0; | |
1558 | for(Int_t k=0; k<13; k++){ | |
1559 | if(k==0) {jetPtMin0=20.0;jetPtMax0=25.0;} | |
1560 | if(k==1) {jetPtMin0=25.0;jetPtMax0=30.0;} | |
1561 | if(k==2) {jetPtMin0=20.0;jetPtMax0=30.0;} | |
1562 | if(k==3) {jetPtMin0=30.0;jetPtMax0=35.0;} | |
1563 | if(k==4) {jetPtMin0=35.0;jetPtMax0=40.0;} | |
1564 | if(k==5) {jetPtMin0=30.0;jetPtMax0=40.0;} | |
1565 | if(k==6) {jetPtMin0=40.0;jetPtMax0=50.0;} | |
1566 | if(k==7) {jetPtMin0=50.0;jetPtMax0=60.0;} | |
1567 | if(k==8) {jetPtMin0=40.0;jetPtMax0=60.0;} | |
1568 | if(k==9) {jetPtMin0=60.0;jetPtMax0=70.0;} | |
1569 | if(k==10){jetPtMin0=70.0;jetPtMax0=80.0;} | |
1570 | if(k==11){jetPtMin0=60.0;jetPtMax0=80.0;} | |
1571 | if(k==12){jetPtMin0=80.0;jetPtMax0=100.0;} | |
1572 | if(JetPt>jetPtMin0 && JetPt<=jetPtMax0){ | |
1573 | fProDiffJetShapeAUE[k]->Fill(tmp1R,PtSumDiffShape[jj1]/JetPt); | |
1574 | fProIntJetShapeAUE[k] ->Fill(tmp1R,PtSumIntShape[jj1]/JetPt); | |
1575 | }//if | |
1576 | }//k loop | |
1577 | tmp1R +=0.1; | |
1578 | }//jj1 loop | |
1579 | //----------------------// | |
1580 | Float_t PtSum = 0; | |
1581 | Int_t NtrkSum = 0; | |
1582 | Bool_t iflagPtSum = kFALSE; | |
1583 | Bool_t iflagNtrkSum = kFALSE; | |
1584 | TMath::Sort(nTracksUE,delRA,index,0); | |
1585 | for(Int_t ii=0; ii<nTracksUE; ii++){ | |
1586 | NtrkSum ++; | |
1587 | PtSum += trackPtA[index[ii]]; | |
1588 | /* | |
1589 | cout << index[ii] << "\t" << | |
1590 | delR[ii] << "\t" << | |
1591 | delEta[ii]<< "\t" << | |
1592 | delPhi[ii]<< "\t" << | |
1593 | trackPt[ii]<< "\t" << | |
1594 | trackEta[ii]<< "\t" << | |
1595 | trackPhi[ii]<< "\t DelR " << | |
1596 | delR[index[ii]] << endl; | |
1597 | */ | |
1598 | if(!iflagNtrkSum){ | |
1599 | if((Float_t)NtrkSum/(Float_t)nTracksUE > 0.79){ | |
1600 | delRNtrkSum80pc = delRA[index[ii]]; | |
1601 | iflagNtrkSum = kTRUE; | |
1602 | }//if NtrkSum | |
1603 | }//if iflag | |
1604 | if(!iflagPtSum){ | |
1605 | if(PtSum/JetPt >= 0.8000){ | |
1606 | delRPtSum80pc = delRA[index[ii]]; | |
1607 | iflagPtSum = kTRUE; | |
1608 | }//if PtSum | |
1609 | }//if iflag | |
1610 | }//track loop 2nd | |
1611 | delete [] index; | |
1612 | delete [] delRA; | |
1613 | delete [] delEtaA; | |
1614 | delete [] delPhiA; | |
1615 | delete [] trackPtA; | |
1616 | delete [] trackEtaA; | |
1617 | delete [] trackPhiA; | |
1618 | fh2DelR80pcNchUE ->Fill(JetPt,delRNtrkSum80pc); | |
1619 | fProDelR80pcNchUE->Fill(JetPt,delRNtrkSum80pc); | |
1620 | fh2DelR80pcPtUE ->Fill(JetPt,delRPtSum80pc); | |
1621 | fProDelR80pcPtUE ->Fill(JetPt,delRPtSum80pc); | |
1622 | for(Int_t ibin=0; ibin<50; ibin++){ | |
1623 | Float_t iR = 0.02*ibin + 0.01; | |
1624 | fh3PtDelRNchSumUE->Fill(JetPt,iR,NchSumA[ibin]); | |
1625 | fh3PtDelRPtSumUE ->Fill(JetPt,iR,PtSumA[ibin]); | |
1626 | Float_t jetPtMin=20.0; Float_t jetPtMax=30.0; | |
1627 | for(Int_t k=0; k<13; k++){ | |
1628 | if(k==0) {jetPtMin=20.0;jetPtMax=25.0;} | |
1629 | if(k==1) {jetPtMin=25.0;jetPtMax=30.0;} | |
1630 | if(k==2) {jetPtMin=20.0;jetPtMax=30.0;} | |
1631 | if(k==3) {jetPtMin=30.0;jetPtMax=35.0;} | |
1632 | if(k==4) {jetPtMin=35.0;jetPtMax=40.0;} | |
1633 | if(k==5) {jetPtMin=30.0;jetPtMax=40.0;} | |
1634 | if(k==6) {jetPtMin=40.0;jetPtMax=50.0;} | |
1635 | if(k==7) {jetPtMin=50.0;jetPtMax=60.0;} | |
1636 | if(k==8) {jetPtMin=40.0;jetPtMax=60.0;} | |
1637 | if(k==9) {jetPtMin=60.0;jetPtMax=70.0;} | |
1638 | if(k==10){jetPtMin=70.0;jetPtMax=80.0;} | |
1639 | if(k==11){jetPtMin=60.0;jetPtMax=80.0;} | |
1640 | if(k==12){jetPtMin=80.0;jetPtMax=100.0;} | |
1641 | if(JetPt>jetPtMin && JetPt<jetPtMax){ | |
1642 | fProDelRNchSumUE[k]->Fill(iR,NchSumA[ibin]); | |
1643 | fProDelRPtSumUE[k]->Fill(iR,PtSumA[ibin]); | |
1644 | }//if | |
1645 | }//k loop | |
1646 | }//ibin loop | |
1647 | }//if(jet) | |
1648 | }//FillJetShapeUE() | |
1649 | //_________________________________________________________________________________// | |
59a5935a | 1650 | |
fed89a49 | 1651 | void AliAnalysisTaskJetProperties::GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt){ |
1652 | //This part is inherited from AliAnalysisTaskFragmentationFunction.cxx | |
1653 | // List of tracks in cone perpendicular to the jet azimuthal direction | |
1654 | Double_t jetMom[3]; | |
1655 | jet->PxPyPz(jetMom); | |
1656 | ||
1657 | TVector3 jet3mom(jetMom); | |
1658 | // Rotate phi and keep eta unchanged | |
1659 | Double_t etaTilted = jet3mom.Eta();//no change in eta | |
1660 | Double_t phiTilted = TVector2::Phi_0_2pi(jet3mom.Phi()) + alpha;//rotate phi by alpha | |
1661 | if(phiTilted > 2*TMath::Pi()) phiTilted = phiTilted - 2*TMath::Pi(); | |
1662 | ||
1663 | for (Int_t itrack=0; itrack<inputlist->GetSize(); itrack++){ | |
1664 | if(fTrackType==kTrackUndef)continue; | |
1665 | Double_t trackMom[3]; | |
1666 | ||
1667 | if(fTrackType==kTrackAOD){ | |
1668 | AliAODTrack *trackaod = dynamic_cast<AliAODTrack*>(inputlist->At(itrack)); | |
1669 | if(!trackaod)continue; | |
1670 | trackaod->PxPyPz(trackMom); | |
1671 | TVector3 track3mom(trackMom); | |
1672 | ||
1673 | Double_t deta = track3mom.Eta() - etaTilted; | |
1674 | Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted); | |
1675 | if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi; | |
1676 | Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi); | |
1677 | ||
1678 | if(dR<=radius){ | |
1679 | outputlist->Add(trackaod); | |
1680 | sumPt += trackaod->Pt(); | |
8c37dfbf | 1681 | //if(fDebug > 100) printf("GetTracksTiltewrpJetAxis itrack, trackPt %d, %f\n",itrack,track3mom.Pt()); |
fed89a49 | 1682 | }//if dR<=radius |
1683 | }//if kTrackAOD | |
1684 | else if(fTrackType==kTrackAODMC){ | |
1685 | AliAODMCParticle* trackmc = dynamic_cast<AliAODMCParticle*>(inputlist->At(itrack)); | |
1686 | if(!trackmc)continue; | |
1687 | trackmc->PxPyPz(trackMom); | |
1688 | TVector3 track3mom(trackMom); | |
1689 | ||
1690 | Double_t deta = track3mom.Eta() - etaTilted; | |
1691 | Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted); | |
1692 | if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi; | |
1693 | Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi); | |
1694 | ||
1695 | if(dR<=radius){ | |
1696 | outputlist->Add(trackmc); | |
1697 | sumPt += trackmc->Pt(); | |
8c37dfbf | 1698 | //if(fDebug > 100) printf("GetTracksTiltewrpJetAxis itrack, trackPt %d, %f\n",itrack,track3mom.Pt()); |
fed89a49 | 1699 | }//if dR<=radius |
1700 | }//if kTrackAODMC | |
1701 | else if(fTrackType==kTrackKine){ | |
1702 | AliVParticle* trackkine = dynamic_cast<AliVParticle*>(inputlist->At(itrack)); | |
1703 | if(!trackkine)continue; | |
1704 | trackkine->PxPyPz(trackMom); | |
1705 | TVector3 track3mom(trackMom); | |
1706 | ||
1707 | Double_t deta = track3mom.Eta() - etaTilted; | |
1708 | Double_t dphi = TMath::Abs(track3mom.Phi() - phiTilted); | |
1709 | if (dphi > TMath::Pi()) dphi = 2. * TMath::Pi() - dphi; | |
1710 | Double_t dR = TMath::Sqrt(deta * deta + dphi * dphi); | |
1711 | ||
1712 | if(dR<=radius){ | |
1713 | outputlist->Add(trackkine); | |
1714 | sumPt += trackkine->Pt(); | |
8c37dfbf | 1715 | //if(fDebug > 100) printf("GetTracksTiltewrpJetAxis itrack, trackPt %d, %f\n",itrack,track3mom.Pt()); |
fed89a49 | 1716 | }//if dR<=radius |
1717 | }//kTrackKine | |
1718 | }//itrack | |
1719 | }//initial loop | |
1720 | //-----------------------------------------------// | |
1721 | Int_t AliAnalysisTaskJetProperties::GetListOfTracks(TList *list, Int_t type) | |
1722 | { | |
1723 | //This part is inherited from AliAnalysisTaskFragmentationFunction.cxx (and modified) | |
1724 | // fill list of tracks selected according to type | |
1725 | ||
8c37dfbf | 1726 | if(fDebug > 3) Printf("%s:%d Selecting tracks with %d", (char*)__FILE__,__LINE__,type); |
fed89a49 | 1727 | |
1728 | if(!list){ | |
8c37dfbf | 1729 | if(fDebug>3) Printf("%s:%d no input list", (char*)__FILE__,__LINE__); |
fed89a49 | 1730 | return -1; |
1731 | } | |
1732 | ||
1733 | if(!fAOD) return -1; | |
1734 | ||
1735 | if(!fAOD->GetTracks()) return 0; | |
1736 | ||
1737 | if(type==kTrackUndef) return 0; | |
1738 | ||
1739 | Int_t iCount = 0; | |
1740 | if(type==kTrackAOD){ | |
1741 | // all rec. tracks, esd filter mask, within acceptance | |
1742 | for(Int_t it=0; it<fAOD->GetNumberOfTracks(); ++it){ | |
1743 | AliAODTrack *tr = fAOD->GetTrack(it); | |
1744 | if(!tr)continue; | |
1745 | if((fFilterMask>0)&&!(tr->TestFilterBit(fFilterMask)))continue;//selecting filtermask | |
1746 | if(tr->Eta() < fTrackEtaMin || tr->Eta() > fTrackEtaMax) continue; | |
1747 | if(tr->Pt() < fTrackPtCut) continue; | |
1748 | list->Add(tr); | |
1749 | iCount++; | |
1750 | }//track loop | |
1751 | }//if type | |
1752 | else if (type==kTrackKine){ | |
1753 | // kine particles, primaries, charged only within acceptance | |
1754 | if(!fMCEvent) return iCount; | |
1755 | for(Int_t it=0; it<fMCEvent->GetNumberOfTracks(); ++it){ | |
1756 | if(!fMCEvent->IsPhysicalPrimary(it))continue;//selecting only primaries | |
1757 | AliMCParticle* part = (AliMCParticle*) fMCEvent->GetTrack(it); | |
1758 | if(!part)continue; | |
1759 | if(part->Particle()->GetPDG()->Charge()==0)continue;//removing neutrals | |
1760 | if(part->Eta() < fTrackEtaMin || part->Eta() > fTrackEtaMax) continue;//eta cut | |
1761 | if(part->Pt() < fTrackPtCut)continue;//pt cut | |
1762 | list->Add(part); | |
1763 | iCount++; | |
1764 | }//track loop | |
1765 | }//if type | |
1766 | else if (type==kTrackAODMC) { | |
1767 | // MC particles (from AOD), physical primaries, charged only within acceptance | |
1768 | if(!fAOD) return -1; | |
1769 | ||
1770 | TClonesArray *tca = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName())); | |
1771 | if(!tca)return iCount; | |
1772 | ||
1773 | for(int it=0; it<tca->GetEntriesFast(); ++it){ | |
1774 | AliAODMCParticle *part = dynamic_cast<AliAODMCParticle*>(tca->At(it)); | |
1775 | if(!part)continue; | |
1776 | if(!part->IsPhysicalPrimary())continue; | |
1777 | if(part->Charge()==0) continue; | |
1778 | if(part->Eta() > fTrackEtaMax || part->Eta() < fTrackEtaMin)continue; | |
1779 | if(part->Pt() < fTrackPtCut) continue; | |
1780 | list->Add(part); | |
1781 | iCount++; | |
1782 | }//track loop | |
1783 | }//if type | |
1784 | ||
1785 | list->Sort(); | |
1786 | return iCount; | |
1787 | } | |
1788 | //_______________________________________________________________________________ |