AliPhysics  a34469b (a34469b)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskSubJetFraction.cxx
Go to the documentation of this file.
1 //
2 // Subjet fraction analysis task.
3 //
4 //Nima Zardoshti
5 
6 #include <TClonesArray.h>
7 #include <TH1F.h>
8 #include <TH2F.h>
9 #include <TH3F.h>
10 #include <TCanvas.h>
11 #include <THnSparse.h>
12 #include <TTree.h>
13 #include <TList.h>
14 #include <TLorentzVector.h>
15 #include <TProfile.h>
16 #include <TChain.h>
17 #include <TSystem.h>
18 #include <TFile.h>
19 #include <TKey.h>
20 #include <AliAnalysisDataSlot.h>
21 #include <AliAnalysisDataContainer.h>
22 #include "TMatrixD.h"
23 #include "TMatrixDSym.h"
24 #include "TMatrixDSymEigen.h"
25 #include "TVector3.h"
26 #include "TVector2.h"
27 #include "AliVCluster.h"
28 #include "AliVTrack.h"
29 #include "AliEmcalJet.h"
30 #include "AliRhoParameter.h"
31 #include "AliLog.h"
32 #include "AliEmcalParticle.h"
33 #include "AliMCEvent.h"
34 #include "AliGenPythiaEventHeader.h"
35 #include "AliAODMCHeader.h"
36 #include "AliMCEvent.h"
37 #include "AliAnalysisManager.h"
38 #include "AliJetContainer.h"
39 #include "AliParticleContainer.h"
40 //#include "AliPythiaInfo.h"
41 #include "TRandom3.h"
42 #include "AliPicoTrack.h"
43 #include "AliEmcalJetFinder.h"
44 #include "AliAODEvent.h"
46 
47 //Globals
48 
49 
50 Double_t XBinsPt[66]={0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.9,0.95,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70,1.80,1.90,2.00,2.20,2.40,2.60,2.80,3.00,3.20,3.40,3.60,3.80,4.00,4.50,5.00,5.50,6.00,6.50,7.00,8.00,9.00,10.00,11.00,12.00,13.00,14.00,15.00,16.00,18.00,20.00,22.00,24.00,26.00,28.00,30.00,32.00,34.00,36.00,40.00,45.00,50.00}; //Lower edges of new bins for rebbing purposes for track pt
52 Double_t XBinsJetPt[35]={0,0.50,1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00,12.00,14.00,16.00,18.00,20.00,25.00,30.00,35.00,40.00,45.00,50.00,60.00,70.00,80.00,90.00,100.00,120.00,140.00,160.00,180.00,200.00,250.00,300.00}; //for jet pt
54 Double_t XBinsJetMass[28]={0,0.50,1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00,12.00,14.00,16.00,18.00,20.00,25.00,30.00,35.00,40.00,45.00,50.00,60.00,70.00,80.00,90.00,100.00}; //for jet mass
59 Double_t Phi_Up=2*(TMath::Pi());
60 Double_t Phi_Low=(-1*(TMath::Pi()));
62 
63 
64 
65 
66 
67 using std::cout;
68 using std::endl;
69 
71 
72 //________________________________________________________________________
75  fContainer(0),
76  fMinFractionShared(0),
77  fJetShapeType(kData),
78  fJetShapeSub(kNoSub),
79  fJetSelection(kInclusive),
80  fPtThreshold(-9999.),
81  fRMatching(0.2),
82  fPtMinTriggerHadron(20.),
83  fPtMaxTriggerHadron(50.),
84  fRecoilAngularWindow(0.6),
85  fSemigoodCorrect(0),
86  fHolePos(0),
87  fHoleWidth(0),
88  fCentSelectOn(kTRUE),
89  fCentMin(0),
90  fCentMax(10),
91  fSubJetAlgorithm(0),
92  fSubJetRadius(0.1),
93  fSubJetMinPt(1),
94  fJetRadius(0.4),
95  fRMatched(0.2),
96  fSharedFractionPtMin(0.5),
97  fDerivSubtrOrder(0),
98  fFullTree(kFALSE),
99  fBeta_SD(0),
100  fZCut(0.1),
101  fNsubMeasure(kFALSE),
102  fhPtTriggerHadron(0x0),
103  fhJetPt(0x0),
104  fhJetPt_1(0x0),
105  fhJetPt_2(0x0),
106  fhJetPhi(0x0),
107  fhJetPhi_1(0x0),
108  fhJetPhi_2(0x0),
109  fhJetEta(0x0),
110  fhJetEta_1(0x0),
111  fhJetEta_2(0x0),
112  fhJetMass(0x0),
113  fhJetMass_1(0x0),
114  fhJetMass_2(0x0),
115  fhJetRadius(0x0),
116  fhJetRadius_1(0x0),
117  fhJetRadius_2(0x0),
118  fhJetCounter(0x0),
119  fhJetCounter_1(0x0),
120  fhJetCounter_2(0x0),
121  fhNumberOfJetTracks(0x0),
122  fhNumberOfJetTracks_1(0x0),
123  fhNumberOfJetTracks_2(0x0),
124  fhSubJetPt(0x0),
125  fhSubJetPt_1(0x0),
126  fhSubJetPt_2(0x0),
127  fhSubJetMass(0x0),
128  fhSubJetMass_1(0x0),
129  fhSubJetMass_2(0x0),
130  fhSubJetRadius(0x0),
131  fhSubJetRadius_1(0x0),
132  fhSubJetRadius_2(0x0),
133  fhSubJetCounter(0x0),
134  fhSubJetCounter_1(0x0),
135  fhSubJetCounter_2(0x0),
136  fhNumberOfSubJetTracks(0x0),
137  fhNumberOfSubJetTracks_1(0x0),
138  fhNumberOfSubJetTracks_2(0x0),
139  fh2PtTriggerHadronJet(0x0),
140  fhPhiTriggerHadronJet(0x0),
141  fhPhiTriggerHadronEventPlane(0x0),
142  fh2PtRatio(0x0),
143  fhEventCounter(0x0),
144  fhEventCounter_1(0x0),
145  fhEventCounter_2(0x0),
146  fhSubJettiness1CheckRatio_FJ_AKT(0x0),
147  fhSubJettiness1CheckRatio_FJ_KT(0x0),
148  fhSubJettiness1CheckRatio_FJ_CA(0x0),
149  fhSubJettiness1CheckRatio_FJ_WTA_KT(0x0),
150  fhSubJettiness1CheckRatio_FJ_WTA_CA(0x0),
151  fhSubJettiness1CheckRatio_FJ_OP_AKT(0x0),
152  fhSubJettiness1CheckRatio_FJ_OP_KT(0x0),
153  fhSubJettiness1CheckRatio_FJ_OP_CA(0x0),
154  fhSubJettiness1CheckRatio_FJ_OP_WTA_KT(0x0),
155  fhSubJettiness1CheckRatio_FJ_OP_WTA_CA(0x0),
156  fhSubJettiness1CheckRatio_FJ_MIN(0x0),
157  fhSubJettiness2CheckRatio_FJ_AKT(0x0),
158  fhSubJettiness2CheckRatio_FJ_KT(0x0),
159  fhSubJettiness2CheckRatio_FJ_CA(0x0),
160  fhSubJettiness2CheckRatio_FJ_WTA_KT(0x0),
161  fhSubJettiness2CheckRatio_FJ_WTA_CA(0x0),
162  fhSubJettiness2CheckRatio_FJ_OP_AKT(0x0),
163  fhSubJettiness2CheckRatio_FJ_OP_KT(0x0),
164  fhSubJettiness2CheckRatio_FJ_OP_CA(0x0),
165  fhSubJettiness2CheckRatio_FJ_OP_WTA_KT(0x0),
166  fhSubJettiness2CheckRatio_FJ_OP_WTA_CA(0x0),
167  fhSubJettiness2CheckRatio_FJ_MIN(0x0),
168  fhSubJettiness2to1CheckRatio_FJ_AKT(0x0),
169  fhSubJettiness2to1CheckRatio_FJ_KT(0x0),
170  fhSubJettiness2to1CheckRatio_FJ_CA(0x0),
171  fhSubJettiness2to1CheckRatio_FJ_WTA_KT(0x0),
172  fhSubJettiness2to1CheckRatio_FJ_WTA_CA(0x0),
173  fhSubJettiness2to1CheckRatio_FJ_OP_AKT(0x0),
174  fhSubJettiness2to1CheckRatio_FJ_OP_KT(0x0),
175  fhSubJettiness2to1CheckRatio_FJ_OP_CA(0x0),
176  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT(0x0),
177  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA(0x0),
178  fhSubJettiness2to1CheckRatio_FJ_MIN(0x0),
179  fhSubJettiness1_FJ_AKT(0x0),
180  fhSubJettiness1_FJ_KT(0x0),
181  fhSubJettiness1_FJ_CA(0x0),
182  fhSubJettiness1_FJ_WTA_KT(0x0),
183  fhSubJettiness1_FJ_WTA_CA(0x0),
184  fhSubJettiness1_FJ_OP_AKT(0x0),
185  fhSubJettiness1_FJ_OP_KT(0x0),
186  fhSubJettiness1_FJ_OP_CA(0x0),
187  fhSubJettiness1_FJ_OP_WTA_KT(0x0),
188  fhSubJettiness1_FJ_OP_WTA_CA(0x0),
189  fhSubJettiness1_FJ_MIN(0x0),
190  fhSubJettiness2_FJ_AKT(0x0),
191  fhSubJettiness2_FJ_KT(0x0),
192  fhSubJettiness2_FJ_CA(0x0),
193  fhSubJettiness2_FJ_WTA_KT(0x0),
194  fhSubJettiness2_FJ_WTA_CA(0x0),
195  fhSubJettiness2_FJ_OP_AKT(0x0),
196  fhSubJettiness2_FJ_OP_KT(0x0),
197  fhSubJettiness2_FJ_OP_CA(0x0),
198  fhSubJettiness2_FJ_OP_WTA_KT(0x0),
199  fhSubJettiness2_FJ_OP_WTA_CA(0x0),
200  fhSubJettiness2_FJ_MIN(0x0),
201  fhSubJettiness2to1_FJ_AKT(0x0),
202  fhSubJettiness2to1_FJ_KT(0x0),
203  fhSubJettiness2to1_FJ_CA(0x0),
204  fhSubJettiness2to1_FJ_WTA_KT(0x0),
205  fhSubJettiness2to1_FJ_WTA_CA(0x0),
206  fhSubJettiness2to1_FJ_OP_AKT(0x0),
207  fhSubJettiness2to1_FJ_OP_KT(0x0),
208  fhSubJettiness2to1_FJ_OP_CA(0x0),
209  fhSubJettiness2to1_FJ_OP_WTA_KT(0x0),
210  fhSubJettiness2to1_FJ_OP_WTA_CA(0x0),
211  fhSubJettiness2to1_FJ_MIN(0x0),
212  fTreeResponseMatrixAxis(0)
213 
214 {
215  for(Int_t i=0;i<nVar;i++){
216  fShapesVar[i]=0;
217  }
218  SetMakeGeneralHistograms(kTRUE);
219  DefineOutput(1, TList::Class());
220  DefineOutput(2, TTree::Class());
221 }
222 
223 //________________________________________________________________________
225  AliAnalysisTaskEmcalJet(name, kTRUE),
226  fContainer(0),
227  fMinFractionShared(0),
228  fJetShapeType(kData),
229  fJetShapeSub(kNoSub),
230  fJetSelection(kInclusive),
231  fPtThreshold(-9999.),
232  fRMatching(0.2),
233  fPtMinTriggerHadron(20.),
234  fPtMaxTriggerHadron(50.),
235  fRecoilAngularWindow(0.6),
236  fSemigoodCorrect(0),
237  fHolePos(0),
238  fHoleWidth(0),
239  fCentSelectOn(kTRUE),
240  fCentMin(0),
241  fCentMax(10),
242  fSubJetAlgorithm(0),
243  fSubJetRadius(0.1),
244  fSubJetMinPt(1),
245  fJetRadius(0.4),
246  fRMatched(0.2),
247  fSharedFractionPtMin(0.5),
248  fDerivSubtrOrder(0),
249  fFullTree(kFALSE),
250  fBeta_SD(0),
251  fZCut(0.1),
252  fNsubMeasure(kFALSE),
253  fhPtTriggerHadron(0x0),
254  fhJetPt(0x0),
255  fhJetPt_1(0x0),
256  fhJetPt_2(0x0),
257  fhJetPhi(0x0),
258  fhJetPhi_1(0x0),
259  fhJetPhi_2(0x0),
260  fhJetEta(0x0),
261  fhJetEta_1(0x0),
262  fhJetEta_2(0x0),
263  fhJetMass(0x0),
264  fhJetMass_1(0x0),
265  fhJetMass_2(0x0),
266  fhJetRadius(0x0),
267  fhJetRadius_1(0x0),
268  fhJetRadius_2(0x0),
269  fhJetCounter(0x0),
270  fhJetCounter_1(0x0),
271  fhJetCounter_2(0x0),
272  fhNumberOfJetTracks(0x0),
273  fhNumberOfJetTracks_1(0x0),
274  fhNumberOfJetTracks_2(0x0),
275  fhSubJetPt(0x0),
276  fhSubJetPt_1(0x0),
277  fhSubJetPt_2(0x0),
278  fhSubJetMass(0x0),
279  fhSubJetMass_1(0x0),
280  fhSubJetMass_2(0x0),
281  fhSubJetRadius(0x0),
282  fhSubJetRadius_1(0x0),
283  fhSubJetRadius_2(0x0),
284  fhSubJetCounter(0x0),
285  fhSubJetCounter_1(0x0),
286  fhSubJetCounter_2(0x0),
287  fhNumberOfSubJetTracks(0x0),
288  fhNumberOfSubJetTracks_1(0x0),
289  fhNumberOfSubJetTracks_2(0x0),
290  fh2PtTriggerHadronJet(0x0),
291  fhPhiTriggerHadronJet(0x0),
292  fhPhiTriggerHadronEventPlane(0x0),
293  fh2PtRatio(0x0),
294  fhEventCounter(0x0),
295  fhEventCounter_1(0x0),
296  fhEventCounter_2(0x0),
297  fhSubJettiness1CheckRatio_FJ_AKT(0x0),
298  fhSubJettiness1CheckRatio_FJ_KT(0x0),
299  fhSubJettiness1CheckRatio_FJ_CA(0x0),
300  fhSubJettiness1CheckRatio_FJ_WTA_KT(0x0),
301  fhSubJettiness1CheckRatio_FJ_WTA_CA(0x0),
302  fhSubJettiness1CheckRatio_FJ_OP_AKT(0x0),
303  fhSubJettiness1CheckRatio_FJ_OP_KT(0x0),
304  fhSubJettiness1CheckRatio_FJ_OP_CA(0x0),
305  fhSubJettiness1CheckRatio_FJ_OP_WTA_KT(0x0),
306  fhSubJettiness1CheckRatio_FJ_OP_WTA_CA(0x0),
307  fhSubJettiness1CheckRatio_FJ_MIN(0x0),
308  fhSubJettiness2CheckRatio_FJ_AKT(0x0),
309  fhSubJettiness2CheckRatio_FJ_KT(0x0),
310  fhSubJettiness2CheckRatio_FJ_CA(0x0),
311  fhSubJettiness2CheckRatio_FJ_WTA_KT(0x0),
312  fhSubJettiness2CheckRatio_FJ_WTA_CA(0x0),
313  fhSubJettiness2CheckRatio_FJ_OP_AKT(0x0),
314  fhSubJettiness2CheckRatio_FJ_OP_KT(0x0),
315  fhSubJettiness2CheckRatio_FJ_OP_CA(0x0),
316  fhSubJettiness2CheckRatio_FJ_OP_WTA_KT(0x0),
317  fhSubJettiness2CheckRatio_FJ_OP_WTA_CA(0x0),
318  fhSubJettiness2CheckRatio_FJ_MIN(0x0),
319  fhSubJettiness2to1CheckRatio_FJ_AKT(0x0),
320  fhSubJettiness2to1CheckRatio_FJ_KT(0x0),
321  fhSubJettiness2to1CheckRatio_FJ_CA(0x0),
322  fhSubJettiness2to1CheckRatio_FJ_WTA_KT(0x0),
323  fhSubJettiness2to1CheckRatio_FJ_WTA_CA(0x0),
324  fhSubJettiness2to1CheckRatio_FJ_OP_AKT(0x0),
325  fhSubJettiness2to1CheckRatio_FJ_OP_KT(0x0),
326  fhSubJettiness2to1CheckRatio_FJ_OP_CA(0x0),
327  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT(0x0),
328  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA(0x0),
329  fhSubJettiness2to1CheckRatio_FJ_MIN(0x0),
330  fhSubJettiness1_FJ_AKT(0x0),
331  fhSubJettiness1_FJ_KT(0x0),
332  fhSubJettiness1_FJ_CA(0x0),
333  fhSubJettiness1_FJ_WTA_KT(0x0),
334  fhSubJettiness1_FJ_WTA_CA(0x0),
335  fhSubJettiness1_FJ_OP_AKT(0x0),
336  fhSubJettiness1_FJ_OP_KT(0x0),
337  fhSubJettiness1_FJ_OP_CA(0x0),
338  fhSubJettiness1_FJ_OP_WTA_KT(0x0),
339  fhSubJettiness1_FJ_OP_WTA_CA(0x0),
340  fhSubJettiness1_FJ_MIN(0x0),
341  fhSubJettiness2_FJ_AKT(0x0),
342  fhSubJettiness2_FJ_KT(0x0),
343  fhSubJettiness2_FJ_CA(0x0),
344  fhSubJettiness2_FJ_WTA_KT(0x0),
345  fhSubJettiness2_FJ_WTA_CA(0x0),
346  fhSubJettiness2_FJ_OP_AKT(0x0),
347  fhSubJettiness2_FJ_OP_KT(0x0),
348  fhSubJettiness2_FJ_OP_CA(0x0),
349  fhSubJettiness2_FJ_OP_WTA_KT(0x0),
350  fhSubJettiness2_FJ_OP_WTA_CA(0x0),
351  fhSubJettiness2_FJ_MIN(0x0),
352  fhSubJettiness2to1_FJ_AKT(0x0),
353  fhSubJettiness2to1_FJ_KT(0x0),
354  fhSubJettiness2to1_FJ_CA(0x0),
355  fhSubJettiness2to1_FJ_WTA_KT(0x0),
356  fhSubJettiness2to1_FJ_WTA_CA(0x0),
357  fhSubJettiness2to1_FJ_OP_AKT(0x0),
358  fhSubJettiness2to1_FJ_OP_KT(0x0),
359  fhSubJettiness2to1_FJ_OP_CA(0x0),
360  fhSubJettiness2to1_FJ_OP_WTA_KT(0x0),
361  fhSubJettiness2to1_FJ_OP_WTA_CA(0x0),
362  fhSubJettiness2to1_FJ_MIN(0x0),
363  fTreeResponseMatrixAxis(0)
364 
365 {
366  // Standard constructor.
367  for(Int_t i=0;i<nVar;i++){
368  fShapesVar[i]=0;
369  }
371  DefineOutput(1, TList::Class());
372  DefineOutput(2, TTree::Class());
373 }
374 
375 //________________________________________________________________________
377 {
378  // Destructor.
379 }
380 
381 //________________________________________________________________________
383 {
384  // Create user output.
385 
387 
388  Bool_t oldStatus = TH1::AddDirectoryStatus();
389  TH1::AddDirectory(kFALSE);
390  TH1::AddDirectory(oldStatus);
391  //create a tree used for the MC data and making a 4D response matrix
392  const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
393  fTreeResponseMatrixAxis = new TTree(nameoutput, nameoutput);
394  if (fFullTree){
395  TString *fShapesVarNames = new TString [nVar];
396 
397  fShapesVarNames[0] = "Pt";
398  fShapesVarNames[1] = "Pt_Truth";
399  fShapesVarNames[2] = "Tau1";
400  fShapesVarNames[3] = "Tau1_Truth";
401  fShapesVarNames[4] = "Tau2";
402  fShapesVarNames[5] = "Tau2_Truth";
403  fShapesVarNames[6] = "Tau3";
404  fShapesVarNames[7] = "Tau3_Truth";
405  fShapesVarNames[8] = "OpeningAngle";
406  fShapesVarNames[9] = "OpeningAngle_Truth";
407  fShapesVarNames[10] = "JetMultiplicity";
408  fShapesVarNames[11] = "JetMultiplicity_Truth";
409  fShapesVarNames[12] = "OpeningAngleSD";
410  fShapesVarNames[13] = "OpeningAngleSD_Truth";
411  fShapesVarNames[14] = "Zg";
412  fShapesVarNames[15] = "Zg_Truth";
413  fShapesVarNames[16] = "LeadingTrackPt";
414  fShapesVarNames[17] = "LeadingTrackPt_Truth";
415  fShapesVarNames[18] = "EventPlaneTriggerHadron";
416  fShapesVarNames[19] = "EventPlaneTriggerHadron_Truth";
417  fShapesVarNames[20] = "DeltaR";
418  fShapesVarNames[21] = "DeltaR_Truth";
419  fShapesVarNames[22] = "Frac1";
420  fShapesVarNames[23] = "Frac1_Truth";
421  fShapesVarNames[24] = "Frac2";
422  fShapesVarNames[25] = "Frac2_Truth";
423  for(Int_t ivar=0; ivar < nVar; ivar++){
424  cout<<"looping over variables"<<endl;
425  fTreeResponseMatrixAxis->Branch(fShapesVarNames[ivar].Data(), &fShapesVar[ivar], Form("%s/D", fShapesVarNames[ivar].Data()));
426  }
427  }
428 
429  if (!fFullTree){
430  const Int_t nVarMin = 20;
431  TString *fShapesVarNames = new TString [nVarMin];
432 
433  fShapesVarNames[0] = "Pt";
434  fShapesVarNames[1] = "Pt_Truth";
435  fShapesVarNames[2] = "Tau1";
436  fShapesVarNames[3] = "Tau1_Truth";
437  fShapesVarNames[4] = "Tau2";
438  fShapesVarNames[5] = "Tau2_Truth";
439  fShapesVarNames[6] = "Tau3";
440  fShapesVarNames[7] = "Tau3_Truth";
441  fShapesVarNames[8] = "OpeningAngle";
442  fShapesVarNames[9] = "OpeningAngle_Truth";
443  fShapesVarNames[10] = "JetMultiplicity";
444  fShapesVarNames[11] = "JetMultiplicity_Truth";
445  fShapesVarNames[12] = "OpeningAngleSD";
446  fShapesVarNames[13] = "OpeningAngleSD_Truth";
447  fShapesVarNames[14] = "Zg";
448  fShapesVarNames[15] = "Zg_Truth";
449  fShapesVarNames[16] = "LeadingTrackPt";
450  fShapesVarNames[17] = "LeadingTrackPt_Truth";
451  fShapesVarNames[18] = "EventPlaneTriggerHadron";
452  fShapesVarNames[19] = "EventPlaneTriggerHadron_Truth";
453 
454  for(Int_t ivar=0; ivar < nVarMin; ivar++){
455  cout<<"looping over variables"<<endl;
456  fTreeResponseMatrixAxis->Branch(fShapesVarNames[ivar].Data(), &fShapesVar[ivar], Form("%s/D", fShapesVarNames[ivar].Data()));
457  }
458  }
459 
461  fhPtTriggerHadron= new TH1F("fhPtTriggerHadron", "fhPtTriggerHadron",1500,-0.5,149.5);
463  fh2PtTriggerHadronJet= new TH2F("fh2PtTriggerHadronJet", "fh2PtTriggerHadronJet",1500,-0.5,149.5,1500,-0.5,149.5);
465  fhPhiTriggerHadronJet= new TH1F("fhPhiTriggerHadronJet", "fhPhiTriggerHadronJet",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
467  fhPhiTriggerHadronEventPlane= new TH1F("fhPhiTriggerHadronEventPlane", "fhPhiTriggerHadronEventPlane",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
469  }
471 
472  // fhJetPt= new TH1F("fhJetPt", "Jet Pt", (XBinsJetPtSize)-1, XBinsJetPt);
473  fhJetPt= new TH1F("fhJetPt", "Jet Pt",1500,-0.5,149.5 );
474  fOutput->Add(fhJetPt);
475  //fhJetPhi= new TH1F("fhJetPhi", "Jet Phi", Phi_Bins, Phi_Low, Phi_Up);
476  fhJetPhi= new TH1F("fhJetPhi", "Jet Phi",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
477  fOutput->Add(fhJetPhi);
478  fhJetEta= new TH1F("fhJetEta", "Jet Eta", Eta_Bins, Eta_Low, Eta_Up);
479  fOutput->Add(fhJetEta);
480  fhJetMass= new TH1F("fhJetMass", "Jet Mass", 4000,-0.5, 39.5);
481  fOutput->Add(fhJetMass);
482  fhJetRadius= new TH1F("fhJetRadius", "Jet Radius", 100, -0.05,0.995);
483  fOutput->Add(fhJetRadius);
484  fhNumberOfJetTracks= new TH1F("fhNumberOfJetTracks", "Number of Tracks within a Jet", 300, -0.5,299.5);
486  fhSubJetRadius= new TH1F("fhSubJetRadius", "SubJet Radius", 100, -0.05,0.995);
487  fOutput->Add(fhSubJetRadius);
488  fhSubJetPt= new TH1F("fhSubJetPt", "SubJet Pt", 1500, -0.5,149.5);
489  fOutput->Add(fhSubJetPt);
490  fhSubJetMass= new TH1F("fhSubJetMass", "Sub Jet Mass", 4000,-0.5, 39.5);
491  fOutput->Add(fhSubJetMass);
492  fhNumberOfSubJetTracks= new TH1F("fhNumberOfSubJetTracks", "Number of Tracks within a Sub Jet", 300, -0.5,299.5);
494  fhJetCounter= new TH1F("fhJetCounter", "Jet Counter", 150, -0.5, 149.5);
495  fOutput->Add(fhJetCounter);
496  fhSubJetCounter = new TH1F("fhSubJetCounter", "SubJet Counter",50, -0.5,49.5);
497  fOutput->Add(fhSubJetCounter);
498  fhEventCounter= new TH1F("fhEventCounter", "Event Counter", 15,0.5,15.5);
499  fOutput->Add(fhEventCounter);
500  }
502  fhSubJettiness1_FJ_KT= new TH1D("fhSubJettiness1_FJ_KT","fhSubJettiness1_FJ_KT",400,-2,2);
504  fhSubJettiness1_FJ_MIN= new TH1D("fhSubJettiness1_FJ_MIN","fhSubJettiness1_FJ_MIN",400,-2,2);
506  fhSubJettiness2_FJ_KT= new TH1D("fhSubJettiness2_FJ_KT","fhSubJettiness2_FJ_KT",400,-2,2);
508  fhSubJettiness2_FJ_MIN= new TH1D("fhSubJettiness2_FJ_MIN","fhSubJettiness2_FJ_MIN",400,-2,2);
510  fhSubJettiness1CheckRatio_FJ_AKT = new TH2D("fhSubJettiness1CheckRatio_FJ_AKT","fhSubJettiness1CheckRatio_FJ_AKT",400,-2,2,300,-1,2);
512  fhSubJettiness1CheckRatio_FJ_KT= new TH2D("fhSubJettiness1CheckRatio_FJ_KT","fhSubJettiness1CheckRatio_FJ_KT",400,-2,2,300,-1,2);
514  fhSubJettiness1CheckRatio_FJ_CA= new TH2D("fhSubJettiness1CheckRatio_FJ_CA","fhSubJettiness1CheckRatio_FJ_CA",400,-2,2,300,-1,2);
516  fhSubJettiness1CheckRatio_FJ_WTA_KT= new TH2D("fhSubJettiness1CheckRatio_FJ_WTA_KT","fhSubJettiness1CheckRatio_FJ_WTA_KT",400,-2,2,300,-1,2);
518  fhSubJettiness1CheckRatio_FJ_WTA_CA= new TH2D("fhSubJettiness1CheckRatio_FJ_WTA_CA","fhSubJettiness1CheckRatio_FJ_WTA_CA",400,-2,2,300,-1,2);
520  fhSubJettiness1CheckRatio_FJ_OP_AKT= new TH2D("fhSubJettiness1CheckRatio_FJ_OP_AKT","fhSubJettiness1CheckRatio_FJ_OP_AKT",400,-2,2,300,-1,2);
522  fhSubJettiness1CheckRatio_FJ_OP_KT= new TH2D("fhSubJettiness1CheckRatio_FJ_OP_KT","fhSubJettiness1CheckRatio_FJ_OP_KT",400,-2,2,300,-1,2);
524  fhSubJettiness1CheckRatio_FJ_OP_CA= new TH2D("fhSubJettiness1CheckRatio_FJ_OP_CA","fhSubJettiness1CheckRatio_FJ_OP_CA",400,-2,2,300,-1,2);
526  fhSubJettiness1CheckRatio_FJ_OP_WTA_KT= new TH2D("fhSubJettiness1CheckRatio_FJ_OP_WTA_KT","fhSubJettiness1CheckRatio_FJ_OP_WTA_KT",400,-2,2,300,-1,2);
528  fhSubJettiness1CheckRatio_FJ_OP_WTA_CA= new TH2D("fhSubJettiness1CheckRatio_FJ_OP_WTA_CA","fhSubJettiness1CheckRatio_FJ_OP_WTA_CA",400,-2,2,300,-1,2);
530  fhSubJettiness1CheckRatio_FJ_MIN= new TH2D("fhSubJettiness1CheckRatio_FJ_MIN","fhSubJettiness1CheckRatio_FJ_MIN",400,-2,2,300,-1,2);
532  fhSubJettiness2CheckRatio_FJ_AKT = new TH2D("fhSubJettiness2CheckRatio_FJ_AKT","fhSubJettiness2CheckRatio_FJ_AKT",400,-2,2,300,-1,2);
534  fhSubJettiness2CheckRatio_FJ_KT= new TH2D("fhSubJettiness2CheckRatio_FJ_KT","fhSubJettiness2CheckRatio_FJ_KT",400,-2,2,300,-1,2);
536  fhSubJettiness2CheckRatio_FJ_CA= new TH2D("fhSubJettiness2CheckRatio_FJ_CA","fhSubJettiness2CheckRatio_FJ_CA",400,-2,2,300,-1,2);
538  fhSubJettiness2CheckRatio_FJ_WTA_KT= new TH2D("fhSubJettiness2CheckRatio_FJ_WTA_KT","fhSubJettiness2CheckRatio_FJ_WTA_KT",400,-2,2,300,-1,2);
540  fhSubJettiness2CheckRatio_FJ_WTA_CA= new TH2D("fhSubJettiness2CheckRatio_FJ_WTA_CA","fhSubJettiness2CheckRatio_FJ_WTA_CA",400,-2,2,300,-1,2);
542  fhSubJettiness2CheckRatio_FJ_OP_AKT= new TH2D("fhSubJettiness2CheckRatio_FJ_OP_AKT","fhSubJettiness2CheckRatio_FJ_OP_AKT",400,-2,2,300,-1,2);
544  fhSubJettiness2CheckRatio_FJ_OP_KT= new TH2D("fhSubJettiness2CheckRatio_FJ_OP_KT","fhSubJettiness2CheckRatio_FJ_OP_KT",400,-2,2,300,-1,2);
546  fhSubJettiness2CheckRatio_FJ_OP_CA= new TH2D("fhSubJettiness2CheckRatio_FJ_OP_CA","fhSubJettiness2CheckRatio_FJ_OP_CA",400,-2,2,300,-1,2);
548  fhSubJettiness2CheckRatio_FJ_OP_WTA_KT= new TH2D("fhSubJettiness2CheckRatio_FJ_OP_WTA_KT","fhSubJettiness2CheckRatio_FJ_OP_WTA_KT",400,-2,2,300,-1,2);
550  fhSubJettiness2CheckRatio_FJ_OP_WTA_CA= new TH2D("fhSubJettiness2CheckRatio_FJ_OP_WTA_CA","fhSubJettiness2CheckRatio_FJ_OP_WTA_CA",400,-2,2,300,-1,2);
552  fhSubJettiness2CheckRatio_FJ_MIN= new TH2D("fhSubJettiness2CheckRatio_FJ_MIN","fhSubJettiness2CheckRatio_FJ_MIN",400,-2,2,300,-1,2);
554  fhSubJettiness2to1CheckRatio_FJ_AKT = new TH2D("fhSubJettiness2to1CheckRatio_FJ_AKT","fhSubJettiness2to1CheckRatio_FJ_AKT",400,-2,2,300,-1,2);
556  fhSubJettiness2to1CheckRatio_FJ_KT= new TH2D("fhSubJettiness2to1CheckRatio_FJ_KT","fhSubJettiness2to1CheckRatio_FJ_KT",400,-2,2,300,-1,2);
558  fhSubJettiness2to1CheckRatio_FJ_CA= new TH2D("fhSubJettiness2to1CheckRatio_FJ_CA","fhSubJettiness2to1CheckRatio_FJ_CA",400,-2,2,300,-1,2);
560  fhSubJettiness2to1CheckRatio_FJ_WTA_KT= new TH2D("fhSubJettiness2to1CheckRatio_FJ_WTA_KT","fhSubJettiness2to1CheckRatio_FJ_WTA_KT",400,-2,2,300,-1,2);
562  fhSubJettiness2to1CheckRatio_FJ_WTA_CA= new TH2D("fhSubJettiness2to1CheckRatio_FJ_WTA_CA","fhSubJettiness2to1CheckRatio_FJ_WTA_CA",400,-2,2,300,-1,2);
564  fhSubJettiness2to1CheckRatio_FJ_OP_AKT= new TH2D("fhSubJettiness2to1CheckRatio_FJ_OP_AKT","fhSubJettiness2to1CheckRatio_FJ_OP_AKT",400,-2,2,300,-1,2);
566  fhSubJettiness2to1CheckRatio_FJ_OP_KT= new TH2D("fhSubJettiness2to1CheckRatio_FJ_OP_KT","fhSubJettiness2to1CheckRatio_FJ_OP_KT",400,-2,2,300,-1,2);
568  fhSubJettiness2to1CheckRatio_FJ_OP_CA= new TH2D("fhSubJettiness2to1CheckRatio_FJ_OP_CA","fhSubJettiness2to1CheckRatio_FJ_OP_CA",400,-2,2,300,-1,2);
570  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT= new TH2D("fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT","fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT",400,-2,2,300,-1,2);
572  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA= new TH2D("fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA","fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA",400,-2,2,300,-1,2);
574  fhSubJettiness2to1CheckRatio_FJ_MIN= new TH2D("fhSubJettiness2to1CheckRatio_FJ_MIN","fhSubJettiness2to1CheckRatio_FJ_MIN",400,-2,2,300,-1,2);
576  fhSubJettiness1_FJ_AKT= new TH1D("fhSubJettiness1_FJ_AKT","fhSubJettiness1_FJ_AKT",400,-2,2);
578  fhSubJettiness1_FJ_CA= new TH1D("fhSubJettiness1_FJ_CA","fhSubJettiness1_FJ_CA",400,-2,2);
580  fhSubJettiness1_FJ_WTA_KT= new TH1D("fhSubJettiness1_FJ_WTA_KT","fhSubJettiness1_FJ_WTA_KT",400,-2,2);
582  fhSubJettiness1_FJ_WTA_CA= new TH1D("fhSubJettiness1_FJ_WTA_CA","fhSubJettiness1_FJ_WTA_CA",400,-2,2);
584  fhSubJettiness1_FJ_OP_AKT= new TH1D("fhSubJettiness1_FJ_OP_AKT","fhSubJettiness1_FJ_OP_AKT",400,-2,2);
586  fhSubJettiness1_FJ_OP_KT= new TH1D("fhSubJettiness1_FJ_OP_KT","fhSubJettiness1_FJ_OP_KT",400,-2,2);
588  fhSubJettiness1_FJ_OP_CA= new TH1D("fhSubJettiness1_FJ_OP_CA","fhSubJettiness1_FJ_OP_CA",400,-2,2);
590  fhSubJettiness1_FJ_OP_WTA_KT= new TH1D("fhSubJettiness1_FJ_OP_WTA_KT","fhSubJettiness1_FJ_OP_WTA_KT",400,-2,2);
592  fhSubJettiness1_FJ_OP_WTA_CA= new TH1D("fhSubJettiness1_FJ_OP_WTA_CA","fhSubJettiness1_FJ_OP_WTA_CA",400,-2,2);
594  fhSubJettiness2_FJ_AKT= new TH1D("fhSubJettiness2_FJ_AKT","fhSubJettiness2_FJ_AKT",400,-2,2);
596  fhSubJettiness2_FJ_CA= new TH1D("fhSubJettiness2_FJ_CA","fhSubJettiness2_FJ_CA",400,-2,2);
598  fhSubJettiness2_FJ_WTA_KT= new TH1D("fhSubJettiness2_FJ_WTA_KT","fhSubJettiness2_FJ_WTA_KT",400,-2,2);
600  fhSubJettiness2_FJ_WTA_CA= new TH1D("fhSubJettiness2_FJ_WTA_CA","fhSubJettiness2_FJ_WTA_CA",400,-2,2);
602  fhSubJettiness2_FJ_OP_AKT= new TH1D("fhSubJettiness2_FJ_OP_AKT","fhSubJettiness2_FJ_OP_AKT",400,-2,2);
604  fhSubJettiness2_FJ_OP_KT= new TH1D("fhSubJettiness2_FJ_OP_KT","fhSubJettiness2_FJ_OP_KT",400,-2,2);
606  fhSubJettiness2_FJ_OP_CA= new TH1D("fhSubJettiness2_FJ_OP_CA","fhSubJettiness2_FJ_OP_CA",400,-2,2);
608  fhSubJettiness2_FJ_OP_WTA_KT= new TH1D("fhSubJettiness2_FJ_OP_WTA_KT","fhSubJettiness2_FJ_OP_WTA_KT",400,-2,2);
610  fhSubJettiness2_FJ_OP_WTA_CA= new TH1D("fhSubJettiness2_FJ_OP_WTA_CA","fhSubJettiness2_FJ_OP_WTA_CA",400,-2,2);
612  fhSubJettiness2to1_FJ_KT= new TH1D("fhSubJettiness2to1_FJ_KT","fhSubJettiness2to1_FJ_KT",400,-2,2);
614  fhSubJettiness2to1_FJ_AKT= new TH1D("fhSubJettiness2to1_FJ_AKT","fhSubJettiness2to1_FJ_AKT",400,-2,2);
616  fhSubJettiness2to1_FJ_CA= new TH1D("fhSubJettiness2to1_FJ_CA","fhSubJettiness2to1_FJ_CA",400,-2,2);
618  fhSubJettiness2to1_FJ_WTA_KT= new TH1D("fhSubJettiness2to1_FJ_WTA_KT","fhSubJettiness2to1_FJ_WTA_KT",400,-2,2);
620  fhSubJettiness2to1_FJ_WTA_CA= new TH1D("fhSubJettiness2to1_FJ_WTA_CA","fhSubJettiness2to1_FJ_WTA_CA",400,-2,2);
622  fhSubJettiness2to1_FJ_OP_AKT= new TH1D("fhSubJettiness2to1_FJ_OP_AKT","fhSubJettiness2to1_FJ_OP_AKT",400,-2,2);
624  fhSubJettiness2to1_FJ_OP_KT= new TH1D("fhSubJettiness2to1_FJ_OP_KT","fhSubJettiness2to1_FJ_OP_KT",400,-2,2);
626  fhSubJettiness2to1_FJ_OP_CA= new TH1D("fhSubJettiness2to1_FJ_OP_CA","fhSubJettiness2to1_FJ_OP_CA",400,-2,2);
628  fhSubJettiness2to1_FJ_OP_WTA_KT= new TH1D("fhSubJettiness2to1_FJ_OP_WTA_KT","fhSubJettiness2to1_FJ_OP_WTA_KT",400,-2,2);
630  fhSubJettiness2to1_FJ_OP_WTA_CA= new TH1D("fhSubJettiness2to1_FJ_OP_WTA_CA","fhSubJettiness2to1_FJ_OP_WTA_CA",400,-2,2);
632  fhSubJettiness2to1_FJ_MIN= new TH1D("fhSubJettiness2to1_FJ_MIN","fhSubJettiness2to1_FJ_MIN",400,-2,2);
634  }
636  fhJetPt_1= new TH1F("fhJetPt_1", "Jet Pt Detector Level",1500,-0.5,149.5 );
637  fOutput->Add(fhJetPt_1);
638  fhJetPt_2= new TH1F("fhJetPt_2", "Jet Pt Particle Level",1500,-0.5,149.5 );
639  fOutput->Add(fhJetPt_2);
640  fhJetPhi_1= new TH1F("fhJetPhi_1", "Jet Phi Detector Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
641  fOutput->Add(fhJetPhi_1);
642  fhJetPhi_2= new TH1F("fhJetPhi_2", "Jet Phi Particle Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
643  fOutput->Add(fhJetPhi_2);
644  fhJetEta_1= new TH1F("fhJetEta_1", "Jet Eta Detector Level", Eta_Bins, Eta_Low, Eta_Up);
645  fOutput->Add(fhJetEta_1);
646  fhJetEta_2= new TH1F("fhJetEta_2", "Jet Eta Particle Level", Eta_Bins, Eta_Low, Eta_Up);
647  fOutput->Add(fhJetEta_2);
648  fhJetMass_1= new TH1F("fhJetMass_1", "Jet Mass Detector Level", 4000,-0.5, 39.5);
649  fOutput->Add(fhJetMass_1);
650  fhJetMass_2= new TH1F("fhJetMass_2", "Jet Mass Particle Level", 4000,-0.5, 39.5);
651  fOutput->Add(fhJetMass_2);
652  fhJetRadius_1= new TH1F("fhJetRadius_1", "Jet Radius Detector Level", 100, -0.05,0.995);
653  fOutput->Add(fhJetRadius_1);
654  fhJetRadius_2= new TH1F("fhJetRadius_2", "Jet Radius Particle Level", 100, -0.05,0.995);
655  fOutput->Add(fhJetRadius_2);
656  fhNumberOfJetTracks_1= new TH1F("fhNumberOfJetTracks_1", "Number of Tracks within a Jet Detector Level", 300, -0.5,299.5);
658  fhNumberOfJetTracks_2= new TH1F("fhNumberOfJetTracks_2", "Number of Tracks within a Jet Particle Level", 300, -0.5,299.5);
660  fhSubJetRadius_1= new TH1F("fhSubJetRadius_1", "SubJet Radius Detector Level", 100, -0.05,0.995);
662  fhSubJetRadius_2= new TH1F("fhSubJetRadius_2", "SubJet Radius Particle Level", 100, -0.05,0.995);
664  fhSubJetPt_1= new TH1F("fhSubJetPt_1", "SubJet Pt Detector Level", 1500, -0.5,149.5);
665  fOutput->Add(fhSubJetPt_1);
666  fhSubJetPt_2= new TH1F("fhSubJetPt_2", "SubJet Pt Particle Level", 1500, -0.5,149.5);
667  fOutput->Add(fhSubJetPt_2);
668  fhSubJetMass_1= new TH1F("fhSubJetMass_1", "Sub Jet Mass Detector Level", 4000,-0.5, 39.5);
669  fOutput->Add(fhSubJetMass_1);
670  fhSubJetMass_2= new TH1F("fhSubJetMass_2", "Sub Jet Mass Particle Level", 4000,-0.5, 39.5);
671  fOutput->Add(fhSubJetMass_2);
672  fhNumberOfSubJetTracks_1= new TH1F("fhNumberOfSubJetTracks_1", "Number of Tracks within a Sub Jet Detector Level", 300, -0.5,299.5);
674  fhNumberOfSubJetTracks_2= new TH1F("fhNumberOfSubJetTracks_2", "Number of Tracks within a Sub Jet Particle Level", 300, -0.5,299.5);
676  fhJetCounter_1= new TH1F("fhJetCounter_1", "Jet Counter Detector Level", 150, -0.5, 149.5);
677  fOutput->Add(fhJetCounter_1);
678  fhJetCounter_2= new TH1F("fhJetCounter_2", "Jet Counter Particle Level", 150, -0.5, 149.5);
679  fOutput->Add(fhJetCounter_2);
680  fhSubJetCounter_1 = new TH1F("fhSubJetCounter_1", "SubJet Counter Detector Level",50, -0.5,49.5);
682  fhSubJetCounter_2 = new TH1F("fhSubJetCounter_2", "SubJet Counter Particle Level",50, -0.5,49.5);
684  fh2PtRatio= new TH2F("fhPtRatio", "MC pt for detector level vs particle level jets",1500,-0.5,149.5,1500,-0.5,149.5);
685  fOutput->Add(fh2PtRatio);
686  fhEventCounter_1= new TH1F("fhEventCounter_1", "Event Counter Detector Level", 15,0.5,15.5);
688  fhEventCounter_2= new TH1F("fhEventCounter_2", "Event Counter Particle Level", 15,0.5,15.5);
690  }
692  fhEventCounter= new TH1F("fhEventCounter", "Event Counter", 15,0.5,15.5);
693  fOutput->Add(fhEventCounter);
694  }
695 
696  PostData(1,fOutput);
697  PostData(2,fTreeResponseMatrixAxis);
698  // delete [] fShapesVarNames;
699 }
700 
701 //________________________________________________________________________
703 {
704  // Run analysis code here, if needed. It will be executed before FillHistograms().
705 
706 
707  return kTRUE;
708 }
709 
710 //________________________________________________________________________
712 {
713 
714  //fhEventCounter Key:
715  // 1: Number of events with a Jet Container
716  // 2: Number of Jets without a Jet Container
717  // 3:
718  // 4: Number of Jets found in all events
719  // 5: Number of Jets that were reclustered in all events
720  // 6: Number of SubJets found in all events
721  // 7: Number of events were primary vertext was found
722  // 8: Number of Jets with more than one SubJet
723  // 9:Number of Jets with more than two SubJets
724  // 12:Number of SubJetinessEvents in kData
725 
726 
727  // const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
728  // Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
729  // if(vert) fhEventCounter->Fill(7);
730  if (fCentSelectOn){
731  if ((fCent>fCentMax) || (fCent<fCentMin)) return 0;
732  }
733 
734  AliAODTrack *TriggerHadron = 0x0;
735  if (fJetSelection == kRecoil) {
736  //you have to set a flag and the limits of the pT interval for your trigger
738  if (TriggerHadronLabel==-99999) return 0; //Trigger Hadron Not Found
739  AliTrackContainer *PartCont =NULL;
740  if (fJetShapeSub==kConstSub) PartCont = GetTrackContainer(1);
741  else PartCont = GetTrackContainer(0);
742  TClonesArray *TrackArray = PartCont->GetArray();
743  TriggerHadron = static_cast<AliAODTrack*>(TrackArray->At(TriggerHadronLabel));
744  if (!TriggerHadron) return 0;//No trigger hadron with label found
745  if(fSemigoodCorrect){
746  Double_t HoleDistance=RelativePhi(TriggerHadron->Phi(),fHolePos);
747  if(TMath::Abs(HoleDistance)+fHoleWidth+fJetRadius>TMath::Pi()-fRecoilAngularWindow) return 0;
748  }
749  fhPtTriggerHadron->Fill(TriggerHadron->Pt()); //Needed for per trigger Normalisation
750  fhPhiTriggerHadronEventPlane->Fill(RelativePhiEventPlane(fEPV0,TriggerHadron->Phi())); //fEPV0 is the event plane from AliAnalysisTaskEmcal
751  }
752 
753 
754 
755 
758  AliEmcalJet *Jet1 = NULL; //Subtracted hybrid Jet
759  AliEmcalJet *Jet2 = NULL; //Unsubtracted Hybrid Jet
760  AliEmcalJet *Jet3 = NULL; //Detector Level Pythia Jet
761  AliEmcalJet *Jet4 = NULL; //Particle Level Pyhtia Jet
762  AliJetContainer *JetCont1= GetJetContainer(0); //Jet Container for Subtracted Hybrid Jets
763  AliJetContainer *JetCont2= GetJetContainer(1); //Jet Container for Unsubtracted Hybrid Jets
764  AliJetContainer *JetCont3= GetJetContainer(2); //Jet Container for Detector Level Pyhtia Jets
765  AliJetContainer *JetCont4= GetJetContainer(3); //Jet Container for Particle Level Pythia Jets
766  AliEmcalJetFinder *Reclusterer1; //Object containg Subjets from Subtracted Hybrid Jets
767  AliEmcalJetFinder *Reclusterer4; //Object containg Subjets from Particle Level Pythia Jets
768  Bool_t JetsMatched=kFALSE;
769  Bool_t EventCounter=kFALSE;
770  Int_t JetNumber=-1;
771  Double_t JetPtThreshold=-2;
772  fhEventCounter->Fill(1);
773  if(JetCont1) {
774  fhEventCounter->Fill(2);
775  JetCont1->ResetCurrentID();
776  while((Jet1=JetCont1->GetNextAcceptJet())) {
777  if (fJetShapeSub==kConstSub) JetPtThreshold=Jet1->Pt();
778  else JetPtThreshold=Jet1->Pt()-(GetRhoVal(0)*Jet1->Area());
779  if ( (!Jet1) || (JetPtThreshold<fPtThreshold)) continue;
780  else {
781  /* if(fSemigoodCorrect){
782  Double_t HoleDistance=RelativePhi(Jet1->Phi(),fHolePos);
783  if(TMath::Abs(HoleDistance)<fHoleWidth) continue;
784  }*/
785  Float_t RecoilDeltaPhi = 0.;
786  if (fJetSelection == kRecoil){
787  RecoilDeltaPhi = RelativePhi(TriggerHadron->Phi(), Jet1->Phi());
788  if (TMath::Abs(RecoilDeltaPhi) < (TMath::Pi() - fRecoilAngularWindow)) continue; //accept the jet only if it overlaps with the recoil phi area of the trigger
789  fh2PtTriggerHadronJet->Fill(TriggerHadron->Pt(), Jet1->Pt());
790  fhPhiTriggerHadronJet->Fill(RelativePhi(TriggerHadron->Phi(), Jet1->Phi()));
791  }
792  if (!EventCounter){
793  fhEventCounter->Fill(3);
794  EventCounter=kTRUE;
795  }
796  if(fJetShapeSub==kConstSub){
797  JetNumber=-1;
798  for(Int_t i = 0; i<JetCont2->GetNJets(); i++) {
799  Jet2 = JetCont2->GetJet(i);
800  if(Jet2->GetLabel()==Jet1->GetLabel()) {
801  JetNumber=i;
802  }
803  }
804  if(JetNumber==-1) continue;
805  Jet2=JetCont2->GetJet(JetNumber);
806  if (JetCont2->AliJetContainer::GetFractionSharedPt(Jet2)<fSharedFractionPtMin) continue;
807  Jet3=Jet2->ClosestJet();
808  }
809  if(!(fJetShapeSub==kConstSub)){
810  if (!(JetCont1->AliJetContainer::GetFractionSharedPt(Jet1)<fSharedFractionPtMin)) continue;
811  Jet3 = Jet1->ClosestJet(); //Note for NoSub and Deriv Sub cases you must fill both the Unsubtracted and Subtracted Hybrid jet containers with the same jet branch
812  }
813  if (!Jet3) continue;
814  Jet4=Jet3->ClosestJet();
815  if(!Jet4) continue;
816  JetsMatched=kTRUE;
818  if (fJetShapeSub==kConstSub) fShapesVar[0]=Jet1->Pt();
819  else fShapesVar[0]=Jet1->Pt()-(GetRhoVal(0)*Jet1->Area());
820  fShapesVar[2]=fjNSubJettiness(Jet1,0,1,0,1,0);
821  fShapesVar[4]=fjNSubJettiness(Jet1,0,2,0,1,0);
822  fShapesVar[6]=fjNSubJettiness(Jet1,0,3,0,1,0);
823  fShapesVar[8]=fjNSubJettiness(Jet1,0,2,0,1,1);
824  fShapesVar[10]=Jet1->GetNumberOfTracks();
825  fShapesVar[12]=fjNSubJettiness(Jet1,0,2,0,1,3,fBeta_SD,fZCut);
826  fShapesVar[14]=fjNSubJettiness(Jet1,0,2,0,1,4,fBeta_SD,fZCut);
827  fShapesVar[16]=Jet1->GetLeadingTrack(JetCont1->GetParticleContainer()->GetArray())->Pt();
829  if (fFullTree){
830  fShapesVar[20]=fjNSubJettiness(Jet1,0,2,0,1,2);
831  Reclusterer1 = Recluster(Jet1, 0, fSubJetRadius, fSubJetMinPt, fSubJetAlgorithm, "SubJetFinder_1");
832  fShapesVar[22]=SubJetFraction(Jet1, Reclusterer1, 1, 0, kTRUE, kFALSE);
833  fShapesVar[24]=SubJetFraction(Jet1, Reclusterer1, 2, 0, kTRUE, kFALSE);
834  }
835  if (JetsMatched){ //even needed? Not now but might be if you want to fill trees when jets aren't matched too
836  fShapesVar[1]=Jet4->Pt();
837  fShapesVar[3]=fjNSubJettiness(Jet4,3,1,0,1,0);
838  fShapesVar[5]=fjNSubJettiness(Jet4,3,2,0,1,0);
839  fShapesVar[7]=fjNSubJettiness(Jet4,3,3,0,1,0);
840  fShapesVar[9]=fjNSubJettiness(Jet4,3,2,0,1,1);
841  fShapesVar[11]=Jet4->GetNumberOfTracks();
842  fShapesVar[13]=fjNSubJettiness(Jet4,3,2,0,1,3,fBeta_SD,fZCut);
843  fShapesVar[15]=fjNSubJettiness(Jet4,3,2,0,1,4,fBeta_SD,fZCut);
844  fShapesVar[17]=Jet4->GetLeadingTrack(JetCont4->GetParticleContainer()->GetArray())->Pt();
846  if (fFullTree){
847  fShapesVar[21]=fjNSubJettiness(Jet4,3,2,0,1,2);
848  Reclusterer4=Recluster(Jet4, 3, fSubJetRadius, 0, fSubJetAlgorithm, "SubJetFinder_4");
849  fShapesVar[23]=SubJetFraction(Jet4, Reclusterer4, 1, 0, kTRUE, kFALSE);
850  fShapesVar[25]=SubJetFraction(Jet4, Reclusterer4, 2, 0, kTRUE, kFALSE);
851  }
852  }
853  else{
854  fShapesVar[1]=-2;
855  fShapesVar[3]=-2;
856  fShapesVar[5]=-2;
857  fShapesVar[7]=-2;
858  fShapesVar[9]=-2;
859  fShapesVar[11]=-2;
860  fShapesVar[13]=-2;
861  fShapesVar[15]=-2;
862  fShapesVar[17]=-2;
863  fShapesVar[19]=-2;
864  if (fFullTree){
865  fShapesVar[21]=-2;
866  fShapesVar[23]=-2;
867  fShapesVar[25]=-2;
868  }
869  }
870  fTreeResponseMatrixAxis->Fill();
871  JetsMatched=kFALSE;
872  }
873  }
874  }
875  }
876 
879  AliEmcalJet *Jet1 = NULL; //Detector Level Jet
880  AliEmcalJet *Jet2 = NULL; //Particle Level Jet
881  AliJetContainer *JetCont1= GetJetContainer(0); //Jet Container for Detector Level Pythia
882  AliJetContainer *JetCont2= GetJetContainer(1); //Jet Container for Particle Level Pythia
883  AliEmcalJetFinder *Reclusterer1; //Object containg Subjets Detector Level
884  AliEmcalJetFinder *Reclusterer2; //Object containg Subjets Particle Level
885  Int_t JetCounter1=0; //Counts number of jets in event
886  Int_t JetCounter2=0; //Counts number of jets in event
887  Double_t JetPhi1=0;
888  Double_t JetPhi2=0;
889  Bool_t JetsMatched=kFALSE;
890  Double_t Pythia_Event_Weight=1;
891  Bool_t EventCounter=kFALSE;
892  fhEventCounter_1->Fill(1);
893  if(JetCont1) {
894  fhEventCounter_1->Fill(2); //Number of events with a jet container
895  JetCont1->ResetCurrentID();
896  while((Jet1=JetCont1->GetNextAcceptJet())) {
897  if( (!Jet1) || ((Jet1->Pt())<fPtThreshold)) {
898  // fhEventCounter_1->Fill(3); //events where the jet had a problem
899  continue;
900  }
901  else {
902  /* if(fSemigoodCorrect){
903  Double_t HoleDistance=RelativePhi(Jet1->Phi(),fHolePos);
904  if(TMath::Abs(HoleDistance)<fHoleWidth) continue;
905  }*/
906  Float_t RecoilDeltaPhi = 0.;
907  if (fJetSelection == kRecoil){
908  RecoilDeltaPhi = RelativePhi(TriggerHadron->Phi(), Jet1->Phi());
909  if (TMath::Abs(RecoilDeltaPhi) < (TMath::Pi() - fRecoilAngularWindow)) continue; //accept the jet only if it overlaps with the recoil phi area of the trigger
910  fh2PtTriggerHadronJet->Fill(TriggerHadron->Pt(), Jet1->Pt());
911  fhPhiTriggerHadronJet->Fill(RelativePhi(TriggerHadron->Phi(), Jet1->Phi()));
912  }
913  if (!EventCounter){
914  fhEventCounter_1->Fill(3);
915  EventCounter=kTRUE;
916  }
917  if((Jet1->GetNumberOfTracks())==0){
918  fhEventCounter_1->Fill(10); //zero track jets
919  }
920  if((Jet1->GetNumberOfTracks())==1){
921  fhEventCounter_1->Fill(11); //one track jets
922  }
923  fhEventCounter_1->Fill(4); //Number of Jets found in all events
924  JetCounter1++;
925  fhJetPt_1->Fill(Jet1->Pt());
926  JetPhi1=Jet1->Phi();
927  if(JetPhi1 < -1*TMath::Pi()) JetPhi1 += (2*TMath::Pi());
928  else if (JetPhi1 > TMath::Pi()) JetPhi1 -= (2*TMath::Pi());
929  fhJetPhi_1->Fill(JetPhi1);
930  fhJetEta_1->Fill(Jet1->Eta());
931  fhJetMass_1->Fill(Jet1->M());
932  fhJetRadius_1->Fill(TMath::Sqrt((Jet1->Area()/TMath::Pi()))); //Radius of Jets per event
934  if((Jet2 = Jet1->ClosestJet())){
935  JetsMatched=kTRUE;
936  if((Jet2->GetNumberOfTracks())==0){
937  fhEventCounter_2->Fill(10); //zero track jets
938  }
939  if((Jet2->GetNumberOfTracks())==1){
940  fhEventCounter_2->Fill(11); //one track jets
941  }
942  fhEventCounter_2->Fill(4); //Number of Jets found in all events
943  JetCounter2++;
944  fhJetPt_2->Fill(Jet2->Pt());
945  JetPhi2=Jet2->Phi();
946  if(JetPhi2 < -1*TMath::Pi()) JetPhi2 += (2*TMath::Pi());
947  else if (JetPhi2 > TMath::Pi()) JetPhi2 -= (2*TMath::Pi());
948  fhJetPhi_2->Fill(JetPhi2);
949  fhJetEta_2->Fill(Jet2->Eta());
950  fhJetMass_2->Fill(Jet2->M());
951  fhJetRadius_2->Fill(TMath::Sqrt((Jet2->Area()/TMath::Pi()))); //Radius of Jets per event
953  fh2PtRatio->Fill(Jet1->Pt(),Jet2->Pt(),Pythia_Event_Weight);
954  }
955  else {
956  fhEventCounter_2->Fill(1);
957  //continue;
958  }
960 
961 
962  fShapesVar[0]=Jet1->Pt();
963  fShapesVar[2]=fjNSubJettiness(Jet1,0,1,0,1,0);
964  fShapesVar[4]=fjNSubJettiness(Jet1,0,2,0,1,0);
965  fShapesVar[6]=fjNSubJettiness(Jet1,0,3,0,1,0);
966  fShapesVar[8]=fjNSubJettiness(Jet1,0,2,0,1,1);
967  fShapesVar[10]=Jet1->GetNumberOfTracks();
968  fShapesVar[12]=fjNSubJettiness(Jet1,0,2,0,1,3,fBeta_SD,fZCut);
969  fShapesVar[14]=fjNSubJettiness(Jet1,0,2,0,1,4,fBeta_SD,fZCut);
970  fShapesVar[16]=Jet1->GetLeadingTrack(JetCont1->GetParticleContainer()->GetArray())->Pt();
971  fShapesVar[18]=-2; //event plane calculation only needed for PbPb recoils
972  Reclusterer1 = Recluster(Jet1, 0, fSubJetRadius, fSubJetMinPt, fSubJetAlgorithm, "SubJetFinder_1");
973  if (fFullTree){
974  fShapesVar[20]=fjNSubJettiness(Jet1,0,2,0,1,2);
975  fShapesVar[22]=SubJetFraction(Jet1, Reclusterer1, 1, 0, kTRUE, kFALSE);
976  fShapesVar[24]=SubJetFraction(Jet1, Reclusterer1, 2, 0, kTRUE, kFALSE);
977  }
978  if (JetsMatched){ //even needed? Not now but might be if you want to fill trees when jets aren't matched too
979  fShapesVar[1]=Jet2->Pt();
980  fShapesVar[3]=fjNSubJettiness(Jet2,1,1,0,1,0);
981  fShapesVar[5]=fjNSubJettiness(Jet2,1,2,0,1,0);
982  fShapesVar[7]=fjNSubJettiness(Jet2,1,3,0,1,0);
983  fShapesVar[9]=fjNSubJettiness(Jet2,1,2,0,1,1);
984  fShapesVar[11]=Jet2->GetNumberOfTracks();
985  fShapesVar[13]=fjNSubJettiness(Jet2,1,2,0,1,3,fBeta_SD,fZCut);
986  fShapesVar[15]=fjNSubJettiness(Jet2,1,2,0,1,4,fBeta_SD,fZCut);
987  fShapesVar[17]=Jet2->GetLeadingTrack(JetCont2->GetParticleContainer()->GetArray())->Pt();
988  fShapesVar[19]=-2;
989  Reclusterer2 = Recluster(Jet2, 1, fSubJetRadius, 0, fSubJetAlgorithm, "SubJetFinder_2");
990  if (fFullTree){
991  fShapesVar[21]=fjNSubJettiness(Jet2,1,2,0,1,2);
992  fShapesVar[23]=SubJetFraction(Jet2, Reclusterer2, 1, 0, kTRUE, kFALSE);
993  fShapesVar[25]=SubJetFraction(Jet2, Reclusterer2, 2, 0, kTRUE, kFALSE);
994  }
995  }
996  else{
997  fShapesVar[1]=-2;
998  fShapesVar[3]=-2;
999  fShapesVar[5]=-2;
1000  fShapesVar[7]=-2;
1001  fShapesVar[9]=-2;
1002  fShapesVar[11]=-2;
1003  fShapesVar[13]=-2;
1004  fShapesVar[15]=-2;
1005  fShapesVar[17]=-2;
1006  fShapesVar[19]=-2;
1007  if (fFullTree){
1008  fShapesVar[21]=-2;
1009  fShapesVar[23]=-2;
1010  fShapesVar[25]=-2;
1011  }
1012  }
1013  fTreeResponseMatrixAxis->Fill();
1014 
1015  fhSubJetCounter_1->Fill(Reclusterer1->GetNumberOfJets());
1016  for (Int_t i= 0; i<Reclusterer1->GetNumberOfJets(); i++){
1017  fhEventCounter_1->Fill(6); //Number of overall subjets in all events
1018  fhSubJetPt_1->Fill(Reclusterer1->GetJet(i)->Pt());
1019  fhSubJetMass_1->Fill(Reclusterer1->GetJet(i)->M());
1020  fhNumberOfSubJetTracks_1->Fill(Reclusterer1->GetJet(i)->GetNumberOfTracks());
1021  fhSubJetRadius_1->Fill(TMath::Sqrt((Reclusterer1->GetJet(i)->Area()/TMath::Pi()))); //Radius of SubJets per event
1022  }
1023  if(JetsMatched){
1024  fhSubJetCounter_2->Fill(Reclusterer2->GetNumberOfJets());
1025  for (Int_t i= 0; i<Reclusterer2->GetNumberOfJets(); i++){
1026  fhEventCounter_2->Fill(6); //Number of overall subjets in all events
1027  fhSubJetPt_2->Fill(Reclusterer2->GetJet(i)->Pt());
1028  fhSubJetMass_2->Fill(Reclusterer2->GetJet(i)->M());
1029  fhNumberOfSubJetTracks_2->Fill(Reclusterer2->GetJet(i)->GetNumberOfTracks());
1030  fhSubJetRadius_2->Fill(TMath::Sqrt((Reclusterer2->GetJet(i)->Area()/TMath::Pi()))); //Radius of SubJets per event
1031  }
1032  }
1033  JetsMatched=kFALSE;
1034  }
1035  }
1036  fhJetCounter_1->Fill(JetCounter1); //Number of Jets in Each Event Particle Level
1037  fhJetCounter_2->Fill(JetCounter2); //Number of Jets in Each Event Detector Level
1038  }
1039  //else {fhEventCounter_1->Fill(3);} //Events with no jet container
1040  }
1041 
1042 
1043 
1045  AliEmcalJet *Jet1 = NULL; //Original Jet in the event
1046  AliJetContainer *JetCont= GetJetContainer(0); //Jet Container for event
1047  Int_t JetCounter=0; //Counts number of jets in event
1048  Double_t JetPhi=0;
1049  Bool_t EventCounter=kFALSE;
1050  Double_t JetPt_ForThreshold=0;
1051  fhEventCounter->Fill(1);
1052  if(JetCont) {
1053  fhEventCounter->Fill(2); //Number of events with a jet container
1054  JetCont->ResetCurrentID();
1055  while((Jet1=JetCont->GetNextAcceptJet())) {
1056  if(!Jet1) continue;
1057  if (fJetShapeSub==kNoSub || fJetShapeSub==kDerivSub) JetPt_ForThreshold = Jet1->Pt()-(GetRhoVal(0)*Jet1->Area());
1058  else JetPt_ForThreshold = Jet1->Pt();
1059  if(JetPt_ForThreshold<fPtThreshold) {
1060  //fhEventCounter->Fill(3); //events where the jet had a problem
1061  continue;
1062  }
1063  else {
1064  /* if(fSemigoodCorrect){
1065  Double_t HoleDistance=RelativePhi(Jet1->Phi(),fHolePos);
1066  if(TMath::Abs(HoleDistance)<fHoleWidth) continue;
1067  }*/
1068  Float_t RecoilDeltaPhi = 0.;
1069  if (fJetSelection == kRecoil){
1070  RecoilDeltaPhi = RelativePhi(TriggerHadron->Phi(), Jet1->Phi());
1071  if (TMath::Abs(RecoilDeltaPhi) < (TMath::Pi() - fRecoilAngularWindow)) continue; //accept the jet only if it overlaps with the recoil phi area of the trigger
1072  fh2PtTriggerHadronJet->Fill(TriggerHadron->Pt(), Jet1->Pt());
1073  fhPhiTriggerHadronJet->Fill(RelativePhi(TriggerHadron->Phi(), Jet1->Phi()));
1074  }
1075  if (!EventCounter){
1076  fhEventCounter->Fill(3);
1077  EventCounter=kTRUE;
1078  }
1079  if((Jet1->GetNumberOfTracks())==0){
1080  fhEventCounter->Fill(10); //zero track jets
1081  }
1082  if((Jet1->GetNumberOfTracks())==1){
1083  fhEventCounter->Fill(11); //one track jets
1084  }
1085  fhEventCounter->Fill(4); //Number of Jets found in all events
1086  JetCounter++;
1087  fhJetPt->Fill(Jet1->Pt());
1088  JetPhi=Jet1->Phi();
1089  if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
1090  else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
1091  fhJetPhi->Fill(JetPhi);
1092  fhJetEta->Fill(Jet1->Eta());
1093  fhJetMass->Fill(Jet1->M());
1094  fhJetRadius->Fill(TMath::Sqrt((Jet1->Area()/TMath::Pi()))); //Radius of Jets per event
1095  fhNumberOfJetTracks->Fill(Jet1->GetNumberOfTracks());
1096  if(fJetShapeSub==kNoSub || fJetShapeSub==kDerivSub) fShapesVar[0]= Jet1->Pt()-(GetRhoVal(0)*Jet1->Area());
1097  else fShapesVar[0]=Jet1->Pt();
1098  fShapesVar[2]=fjNSubJettiness(Jet1,0,1,0,1,0);
1099  fShapesVar[4]=fjNSubJettiness(Jet1,0,2,0,1,0);
1100  fShapesVar[6]=fjNSubJettiness(Jet1,0,3,0,1,0);
1101  fShapesVar[8]=fjNSubJettiness(Jet1,0,2,0,1,1);
1102  fShapesVar[10]=Jet1->GetNumberOfTracks();
1103  fShapesVar[12]=fjNSubJettiness(Jet1,0,2,0,1,3,fBeta_SD,fZCut);
1104  fShapesVar[14]=fjNSubJettiness(Jet1,0,2,0,1,4,fBeta_SD,fZCut);
1105  fShapesVar[16]=Jet1->GetLeadingTrack(JetCont->GetParticleContainer()->GetArray())->Pt();
1106  fShapesVar[18]=-2; //event plane calculation not needed for data
1107  AliEmcalJetFinder *Reclusterer1 = Recluster(Jet1, 0, fSubJetRadius, fSubJetMinPt, fSubJetAlgorithm, "SubJetFinder");
1108  if (fFullTree){
1109  fShapesVar[20]=fjNSubJettiness(Jet1,0,2,0,1,2);
1110  fShapesVar[22]=SubJetFraction(Jet1, Reclusterer1, 1, 0, kTRUE, kFALSE);
1111  fShapesVar[24]=SubJetFraction(Jet1, Reclusterer1, 2, 0, kTRUE, kFALSE);
1112  }
1113  fShapesVar[1]=-2;
1114  fShapesVar[3]=-2;
1115  fShapesVar[5]=-2;
1116  fShapesVar[7]=-2;
1117  fShapesVar[9]=-2;
1118  fShapesVar[11]=-2;
1119  fShapesVar[13]=-2;
1120  fShapesVar[15]=-2;
1121  fShapesVar[17]=-2;
1122  fShapesVar[19]=-2;
1123  if (fFullTree){
1124  fShapesVar[21]=-2;
1125  fShapesVar[23]=-2;
1126  fShapesVar[25]=-2;
1127  }
1128  fTreeResponseMatrixAxis->Fill();
1129  fhSubJetCounter->Fill(Reclusterer1->GetNumberOfJets());
1130  for (Int_t i= 0; i<Reclusterer1->GetNumberOfJets(); i++){
1131  fhEventCounter->Fill(6); //Number of overall subjets in all events
1132  fhSubJetPt->Fill(Reclusterer1->GetJet(i)->Pt());
1133  fhSubJetMass->Fill(Reclusterer1->GetJet(i)->M());
1134  fhNumberOfSubJetTracks->Fill(Reclusterer1->GetJet(i)->GetNumberOfTracks());
1135  fhSubJetRadius->Fill(TMath::Sqrt((Reclusterer1->GetJet(i)->Area()/TMath::Pi()))); //Radius of SubJets per event
1136  }
1137  }
1138  }
1139  fhJetCounter->Fill(JetCounter); //Number of Jets in Each Event
1140  }
1141  //else {fhEventCounter->Fill(2);} //Events with no jet container
1142  }
1143 
1144 
1146 
1147  AliEmcalJet *Jet1 = NULL; //Original Jet in the event
1148  AliJetContainer *JetCont= GetJetContainer(0); //Jet Container for event
1149  Int_t JetCounter=0; //Counts number of jets in event
1150  Double_t JetPhi=0;
1151  Bool_t EventCounter=kFALSE;
1152  Double_t JetPt_ForThreshold=0;
1153  fhEventCounter->Fill(1);
1154  if(JetCont) {
1155  fhEventCounter->Fill(2); //Number of events with a jet container
1156  JetCont->ResetCurrentID();
1157  while((Jet1=JetCont->GetNextAcceptJet())) {
1158  // if (((Jet1=JetCont->GetLeadingJet("rho")) && (fPtThreshold<=Jet1->Pt()-(GetRhoVal(0)*Jet1->Area())))){
1159  if(!Jet1) continue;
1160  if(fJetShapeSub==kNoSub || fJetShapeSub==kDerivSub) JetPt_ForThreshold = Jet1->Pt()-(GetRhoVal(0)*Jet1->Area());
1161  else JetPt_ForThreshold = Jet1->Pt();
1162  if(JetPt_ForThreshold<fPtThreshold) {
1163  //fhEventCounter->Fill(3); //events where the jet had a problem
1164  continue;
1165  }
1166  else {
1167  /* if(fSemigoodCorrect){
1168  Double_t HoleDistance=RelativePhi(Jet1->Phi(),fHolePos);
1169  if(TMath::Abs(HoleDistance)<fHoleWidth) continue;
1170  }*/
1171  Float_t RecoilDeltaPhi = 0.;
1172  if (fJetSelection == kRecoil){
1173  RecoilDeltaPhi = RelativePhi(TriggerHadron->Phi(), Jet1->Phi());
1174  if (TMath::Abs(RecoilDeltaPhi) < (TMath::Pi() - fRecoilAngularWindow)) continue; //accept the jet only if it overlaps with the recoil phi area of the trigger
1175  fh2PtTriggerHadronJet->Fill(TriggerHadron->Pt(), Jet1->Pt());
1176  fhPhiTriggerHadronJet->Fill(RelativePhi(TriggerHadron->Phi(), Jet1->Phi()));
1177  }
1178  if (!EventCounter){
1179  fhEventCounter->Fill(3);
1180  EventCounter=kTRUE;
1181  }
1182  if((Jet1->GetNumberOfTracks())==0){
1183  fhEventCounter->Fill(10); //zero track jets
1184  }
1185  if((Jet1->GetNumberOfTracks())==1){
1186  fhEventCounter->Fill(11); //one track jets
1187  }
1188  fhEventCounter->Fill(4); //Number of Jets found in all events
1189  JetCounter++;
1190  fhJetPt->Fill(Jet1->Pt());
1191  JetPhi=Jet1->Phi();
1192  if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
1193  else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
1194  fhJetPhi->Fill(JetPhi);
1195  fhJetEta->Fill(Jet1->Eta());
1196  fhJetMass->Fill(Jet1->M());
1197  fhJetRadius->Fill(TMath::Sqrt((Jet1->Area()/TMath::Pi()))); //Radius of Jets per event
1198  fhNumberOfJetTracks->Fill(Jet1->GetNumberOfTracks());
1199 
1200  Int_t FJ_Algorithm=9; //KT=0, CA=1, AKT_R02=2, WTA_KT=3, WTA_CA=4, OP_KT=5, OP_CA=6, OP_AKT_R02=7, OP_WTA_KT=8, OP_WTA_CA=9, MIN=10
1201  Double_t FJ_Beta=1.0;
1202  /* fhSubJettiness1CheckRatio_FJ_KT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1203  fhSubJettiness1CheckRatio_FJ_CA->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,1,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1204  fhSubJettiness1CheckRatio_FJ_AKT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,2,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1205  fhSubJettiness1CheckRatio_FJ_WTA_KT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,3,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1206  fhSubJettiness1CheckRatio_FJ_WTA_CA->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,4,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1207  fhSubJettiness1CheckRatio_FJ_OP_KT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,5,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1208  fhSubJettiness1CheckRatio_FJ_OP_CA->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,6,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1209  fhSubJettiness1CheckRatio_FJ_OP_AKT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,7,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1210  fhSubJettiness1CheckRatio_FJ_OP_WTA_KT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,8,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1211  fhSubJettiness1CheckRatio_FJ_OP_WTA_CA->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,9,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1212  fhSubJettiness1CheckRatio_FJ_MIN->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,1,10,FJ_Beta,0),fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1213  fhSubJettiness2CheckRatio_FJ_KT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1214  fhSubJettiness2CheckRatio_FJ_CA->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,1,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1215  fhSubJettiness2CheckRatio_FJ_AKT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,2,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1216  fhSubJettiness2CheckRatio_FJ_WTA_KT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,3,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1217  fhSubJettiness2CheckRatio_FJ_WTA_CA->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,4,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1218  fhSubJettiness2CheckRatio_FJ_OP_KT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,5,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1219  fhSubJettiness2CheckRatio_FJ_OP_CA->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,6,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1220  fhSubJettiness2CheckRatio_FJ_OP_AKT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,7,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1221  fhSubJettiness2CheckRatio_FJ_OP_WTA_KT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,8,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1222  fhSubJettiness2CheckRatio_FJ_OP_WTA_CA->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,9,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1223  fhSubJettiness2CheckRatio_FJ_MIN->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)-fjNSubJettiness(Jet1,0,2,10,FJ_Beta,0),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1224 
1225  fhSubJettiness2to1CheckRatio_FJ_KT->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1226  fhSubJettiness2to1CheckRatio_FJ_CA->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,1,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,1,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1227  fhSubJettiness2to1CheckRatio_FJ_AKT->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,2,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,2,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1228  fhSubJettiness2to1CheckRatio_FJ_WTA_KT->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,3,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,3,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1229  fhSubJettiness2to1CheckRatio_FJ_WTA_CA->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,4,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,4,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1230  fhSubJettiness2to1CheckRatio_FJ_OP_KT->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,5,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,5,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1231  fhSubJettiness2to1CheckRatio_FJ_OP_CA->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,6,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,6,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1232  fhSubJettiness2to1CheckRatio_FJ_OP_AKT->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,7,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,7,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1233  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,8,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,8,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1234  fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,9,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,9,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1235  fhSubJettiness2to1CheckRatio_FJ_MIN->Fill((fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0))-(fjNSubJettiness(Jet1,0,2,10,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,10,FJ_Beta,0)),fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1236 
1237 
1238  fhSubJettiness1_FJ_KT->Fill(fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1239  fhSubJettiness1_FJ_CA->Fill(fjNSubJettiness(Jet1,0,1,1,FJ_Beta,0));
1240  fhSubJettiness1_FJ_AKT->Fill(fjNSubJettiness(Jet1,0,1,2,FJ_Beta,0));
1241  fhSubJettiness1_FJ_WTA_KT->Fill(fjNSubJettiness(Jet1,0,1,3,FJ_Beta,0));
1242  fhSubJettiness1_FJ_WTA_CA->Fill(fjNSubJettiness(Jet1,0,1,4,FJ_Beta,0));
1243  fhSubJettiness1_FJ_OP_KT->Fill(fjNSubJettiness(Jet1,0,1,5,FJ_Beta,0));
1244  fhSubJettiness1_FJ_OP_CA->Fill(fjNSubJettiness(Jet1,0,1,6,FJ_Beta,0));
1245  fhSubJettiness1_FJ_OP_AKT->Fill(fjNSubJettiness(Jet1,0,1,7,FJ_Beta,0));
1246  fhSubJettiness1_FJ_OP_WTA_KT->Fill(fjNSubJettiness(Jet1,0,1,8,FJ_Beta,0));
1247  fhSubJettiness1_FJ_OP_WTA_CA->Fill(fjNSubJettiness(Jet1,0,1,9,FJ_Beta,0));
1248  fhSubJettiness1_FJ_MIN->Fill(fjNSubJettiness(Jet1,0,1,10,FJ_Beta,0));
1249  fhSubJettiness2_FJ_KT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0));
1250  fhSubJettiness2_FJ_CA->Fill(fjNSubJettiness(Jet1,0,2,1,FJ_Beta,0));
1251  fhSubJettiness2_FJ_AKT->Fill(fjNSubJettiness(Jet1,0,2,2,FJ_Beta,0)); //because in this case we aren't garantueed to get 2 subjets
1252  fhSubJettiness2_FJ_WTA_KT->Fill(fjNSubJettiness(Jet1,0,2,3,FJ_Beta,0));
1253  fhSubJettiness2_FJ_WTA_CA->Fill(fjNSubJettiness(Jet1,0,2,4,FJ_Beta,0));
1254  fhSubJettiness2_FJ_OP_KT->Fill(fjNSubJettiness(Jet1,0,2,5,FJ_Beta,0));
1255  fhSubJettiness2_FJ_OP_CA->Fill(fjNSubJettiness(Jet1,0,2,6,FJ_Beta,0));
1256  fhSubJettiness2_FJ_OP_AKT->Fill(fjNSubJettiness(Jet1,0,2,7,FJ_Beta,0));
1257  fhSubJettiness2_FJ_OP_WTA_KT->Fill(fjNSubJettiness(Jet1,0,2,8,FJ_Beta,0));
1258  fhSubJettiness2_FJ_OP_WTA_CA->Fill(fjNSubJettiness(Jet1,0,2,9,FJ_Beta,0));
1259  fhSubJettiness2_FJ_MIN->Fill(fjNSubJettiness(Jet1,0,2,10,FJ_Beta,0));
1260 
1261  fhSubJettiness2to1_FJ_KT->Fill(fjNSubJettiness(Jet1,0,2,0,FJ_Beta,0)/fjNSubJettiness(Jet1,0,1,0,FJ_Beta,0));
1262  fhSubJettiness2to1_FJ_CA->Fill(fjNSubJettiness(Jet1,0,2,1,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,1,FJ_Beta,0));
1263  fhSubJettiness2to1_FJ_AKT->Fill(fjNSubJettiness(Jet1,0,2,2,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,2,FJ_Beta,0)); //because in this case we aren't garantueed to get 2 subjets
1264  fhSubJettiness2to1_FJ_WTA_KT->Fill(fjNSubJettiness(Jet1,0,2,3,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,3,FJ_Beta,0));
1265  fhSubJettiness2to1_FJ_WTA_CA->Fill(fjNSubJettiness(Jet1,0,2,4,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,4,FJ_Beta,0));
1266  fhSubJettiness2to1_FJ_OP_KT->Fill(fjNSubJettiness(Jet1,0,2,5,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,5,FJ_Beta,0));
1267  fhSubJettiness2to1_FJ_OP_CA->Fill(fjNSubJettiness(Jet1,0,2,6,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,6,FJ_Beta,0));
1268  fhSubJettiness2to1_FJ_OP_AKT->Fill(fjNSubJettiness(Jet1,0,2,7,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,7,FJ_Beta,0));
1269  fhSubJettiness2to1_FJ_OP_WTA_KT->Fill(fjNSubJettiness(Jet1,0,2,8,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,8,FJ_Beta,0));
1270  fhSubJettiness2to1_FJ_OP_WTA_CA->Fill(fjNSubJettiness(Jet1,0,2,9,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,9,FJ_Beta,0));
1271  fhSubJettiness2to1_FJ_MIN->Fill(fjNSubJettiness(Jet1,0,2,10,FJ_Beta,0)/fjNSubJettiness(Jet1,0,2,10,FJ_Beta,0));
1272  */
1273  if(fJetShapeSub==kNoSub || fJetShapeSub==kDerivSub) fShapesVar[0]= Jet1->Pt()-(GetRhoVal(0)*Jet1->Area());
1274  else fShapesVar[0]=Jet1->Pt();
1275  fShapesVar[2]=fjNSubJettiness(Jet1,0,1,0,1,0);
1276  fShapesVar[4]=fjNSubJettiness(Jet1,0,2,0,1,0);
1277  fShapesVar[6]=fjNSubJettiness(Jet1,0,3,0,1,0);
1278  fShapesVar[8]=fjNSubJettiness(Jet1,0,2,0,1,1);
1279  fShapesVar[10]=Jet1->GetNumberOfTracks();
1280  fShapesVar[12]=fjNSubJettiness(Jet1,0,2,0,1,3,fBeta_SD,fZCut);
1281  fShapesVar[14]=fjNSubJettiness(Jet1,0,2,0,1,4,fBeta_SD,fZCut);
1282  fShapesVar[16]=Jet1->GetLeadingTrack(JetCont->GetParticleContainer()->GetArray())->Pt();
1283  fShapesVar[18]=-2;
1284  AliEmcalJetFinder *Reclusterer1 = Recluster(Jet1, 0, fSubJetRadius, fSubJetMinPt, fSubJetAlgorithm, "SubJetFinder");
1285  if (fFullTree){
1286  fShapesVar[20]=fjNSubJettiness(Jet1,0,2,0,1,2);
1287  fShapesVar[22]=SubJetFraction(Jet1, Reclusterer1, 1, 0, kTRUE, kFALSE);
1288  fShapesVar[24]=SubJetFraction(Jet1, Reclusterer1, 2, 0, kTRUE, kFALSE);
1289  }
1290  fShapesVar[1]=-2;
1291  fShapesVar[3]=-2;
1292  fShapesVar[5]=-2;
1293  fShapesVar[7]=-2;
1294  fShapesVar[9]=-2;
1295  fShapesVar[11]=-2;
1296  fShapesVar[13]=-2;
1297  fShapesVar[15]=-2;
1298  fShapesVar[17]=-2;
1299  fShapesVar[19]=-2;
1300  if (fFullTree){
1301  fShapesVar[21]=-2;
1302  fShapesVar[23]=-2;
1303  fShapesVar[25]=-2;
1304  }
1305  fTreeResponseMatrixAxis->Fill();
1306 
1307  fhSubJetCounter->Fill(Reclusterer1->GetNumberOfJets());
1308  for (Int_t i= 0; i<Reclusterer1->GetNumberOfJets(); i++){
1309  fhEventCounter->Fill(6); //Number of overall subjets in all events
1310  fhSubJetPt->Fill(Reclusterer1->GetJet(i)->Pt());
1311  fhSubJetMass->Fill(Reclusterer1->GetJet(i)->M());
1312  fhNumberOfSubJetTracks->Fill(Reclusterer1->GetJet(i)->GetNumberOfTracks());
1313  fhSubJetRadius->Fill(TMath::Sqrt((Reclusterer1->GetJet(i)->Area()/TMath::Pi()))); //Radius of SubJets per event
1314  }
1315  }
1316  }
1317  fhJetCounter->Fill(JetCounter); //Number of Jets in Each Event
1318  }
1319  //else {fhEventCounter->Fill(2);} //Events with no jet container
1320  }
1321  return kTRUE;
1322 }
1323 //________________________________________________________________________
1325 
1326  if(Phi < -1*TMath::Pi()) Phi += (2*TMath::Pi());
1327  else if (Phi > TMath::Pi()) Phi -= (2*TMath::Pi());
1328  Double_t DeltaPhi=Phi-EventPlane;
1329  if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1330  else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1331  return DeltaPhi;
1332 }
1333 //________________________________________________________________________
1335 
1336  if(Phi1 < -1*TMath::Pi()) Phi1 += (2*TMath::Pi()); // Turns the range of 0to2Pi into -PitoPi ???????????
1337  else if (Phi1 > TMath::Pi()) Phi1 -= (2*TMath::Pi());
1338  if(Phi2 < -1*TMath::Pi()) Phi2 += (2*TMath::Pi());
1339  else if (Phi2 > TMath::Pi()) Phi2 -= (2*TMath::Pi());
1340  Double_t DeltaPhi=Phi2-Phi1;
1341  if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1342  else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1343  return DeltaPhi;
1344 }
1345 
1346 
1347 //--------------------------------------------------------------------------
1349 
1350  AliTrackContainer *PartCont = NULL;
1351  if (fJetShapeSub==kConstSub) PartCont = GetTrackContainer(1);
1352  else PartCont = GetTrackContainer(0);
1353  TClonesArray *TracksArray = PartCont->GetArray();
1354  if(!PartCont || !TracksArray) return -99999;
1355  AliAODTrack *Track = 0x0;
1356  Int_t Trigger_Index[100];
1357  for (Int_t i=0; i<100; i++) Trigger_Index[i] = 0;
1358  Int_t Trigger_Counter = 0;
1359  for(Int_t i=0; i < TracksArray->GetEntriesFast(); i++){
1360  if((Track = static_cast<AliAODTrack*>(PartCont->GetAcceptTrack(i)))){
1361  if (!Track) continue;
1362  if(TMath::Abs(Track->Eta())>0.9) continue;
1363  if (Track->Pt()<0.15) continue;
1364  if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1365  Trigger_Index[Trigger_Counter] = i;
1366  Trigger_Counter++;
1367  }
1368  }
1369  }
1370  if (Trigger_Counter == 0) return -99999;
1371  Int_t RandomNumber = 0, Index = 0 ;
1372  TRandom3* Random = new TRandom3(0);
1373  RandomNumber = Random->Integer(Trigger_Counter);
1374  Index = Trigger_Index[RandomNumber];
1375  return Index;
1376 }
1377 
1378 
1379 //--------------------------------------------------------------------------
1381 
1382  AliJetContainer *JetCont = GetJetContainer(JetContNb);
1383  Double_t Angularity_Numerator=0; //Reset these values
1384  Double_t Angularity_Denominator=0;
1385  AliVParticle *Particle=0x0;
1386  Double_t DeltaPhi=0;
1387 
1388 
1389  for (Int_t i=0; i< Jet->GetNumberOfTracks(); i++){ //loops through all tracks (particles in the jet
1390  Particle = static_cast<AliVParticle*>(Jet->TrackAt(i, JetCont->GetParticleContainer()->GetArray()));
1391  if(!Particle) continue;
1392  DeltaPhi=RelativePhi(Jet->Phi(),Particle->Phi());
1393  Angularity_Numerator=Angularity_Numerator+(Particle->Pt()*TMath::Sqrt(((Particle->Eta()-Jet->Eta())*(Particle->Eta()-Jet->Eta()))+(DeltaPhi*DeltaPhi)));
1394  Angularity_Denominator= Angularity_Denominator+Particle->Pt();
1395  }
1396  if(Angularity_Denominator!=0) return Angularity_Numerator/Angularity_Denominator;
1397  else return -1;
1398 
1399 }
1400 
1401 
1402 
1403 //--------------------------------------------------------------------------
1405 
1406  AliJetContainer *JetCont = GetJetContainer(JetContNb);
1407  Double_t PTD_Numerator=0; //Reset these values
1408  Double_t PTD_Denominator=0;
1409  AliVParticle *Particle=0x0;
1410  Double_t DeltaPhi=0;
1411  for (Int_t i=0; i< Jet->GetNumberOfTracks(); i++){ //loops through all tracks (particles in the jet
1412  Particle = static_cast<AliVParticle*>(Jet->TrackAt(i, JetCont->GetParticleContainer()->GetArray()));
1413  if(!Particle) continue;
1414  PTD_Numerator=PTD_Numerator+(Particle->Pt()*Particle->Pt());
1415  PTD_Denominator=PTD_Denominator+Particle->Pt();
1416  }
1417  if(PTD_Denominator!=0) return TMath::Sqrt(PTD_Numerator)/PTD_Denominator;
1418  else return -1;
1419 
1420 }
1421 
1422 
1423 //----------------------------------------------------------------------
1425 AliEmcalJetFinder *AliAnalysisTaskSubJetFraction::Recluster(AliEmcalJet *Jet, Int_t JetContNb, Double_t SubJetRadius, Double_t SubJetMinPt, Int_t Algorithm, const char* Name){
1426 
1427  AliJetContainer *JetCont = GetJetContainer(JetContNb);
1428  AliEmcalJetFinder *Reclusterer = new AliEmcalJetFinder(Name); //JetFinder Object for reclustered jets
1429  Reclusterer->SetRadius(SubJetRadius);
1430  Reclusterer->SetJetMinPt(SubJetMinPt);
1431  Reclusterer->SetJetAlgorithm(Algorithm); //0 for anti-kt 1 for kt
1432  Reclusterer->SetJetMaxEta(0.9);
1433  Reclusterer->SetRecombSheme(0);
1435  const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1436  Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
1437  if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;} //reclustering jet1 using the jetfinderobject Reclusterer
1438  }
1439  else{
1440  Double_t dVtx[3]={1,1,1};
1441  if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;} //reclustering jet1 using the jetfinderobject Reclusterer
1442  }
1443  return Reclusterer;
1444 
1445 }
1446 
1447 
1448 
1449 //----------------------------------------------------------------------
1451  AliEmcalJet *SubJet=NULL;
1452  Double_t SortingVariable;
1453  Int_t ArraySize =N+1;
1454  TArrayD *JetSorter = new TArrayD(ArraySize);
1455  TArrayD *JetIndexSorter = new TArrayD(ArraySize);
1456  for (Int_t i=0; i<ArraySize; i++){
1457  JetSorter->SetAt(0,i);
1458  }
1459  for (Int_t i=0; i<ArraySize; i++){
1460  JetIndexSorter->SetAt(0,i);
1461  }
1462  if(Reclusterer->GetNumberOfJets()<N) return -999;
1463  for (Int_t i=0; i<Reclusterer->GetNumberOfJets(); i++){
1464  SubJet=Reclusterer->GetJet(i);
1465  if (Type==0) SortingVariable=SubJet->Pt();
1466  else if (Type==1) SortingVariable=SubJet->E();
1467  else if (Type==2) SortingVariable=SubJet->M();
1468  for (Int_t j=0; j<N; j++){
1469  if (SortingVariable>JetSorter->GetAt(j)){
1470  for (Int_t k=N-1; k>=j; k--){
1471  JetSorter->SetAt(JetSorter->GetAt(k),k+1);
1472  JetIndexSorter->SetAt(JetIndexSorter->GetAt(k),k+1);
1473  }
1474  JetSorter->SetAt(SortingVariable,j);
1475  JetIndexSorter->SetAt(i,j);
1476  break;
1477  }
1478  }
1479  }
1480  if (!Index) return JetSorter->GetAt(N-1);
1481  else return JetIndexSorter->GetAt(N-1);
1482 }
1483 
1484 
1485 
1486 //returns -1 if the Nth hardest jet is requested where N>number of available jets
1487 //type: 0=Pt 1=E 2=M
1488 //Index TRUE=returns index FALSE=returns value of quantatiy in question
1489 
1490 
1491 
1492 
1493 
1494 
1495 
1496 //----------------------------------------------------------------------
1498  AliEmcalJet *SubJet=NULL;
1499  Double_t Observable=0;
1500  Double_t Fraction_Numerator=0;
1501  Bool_t Error=kFALSE;
1502  if (!Jet->GetNumberOfTracks()) return -2;
1503  if (Add){
1504  for (Int_t i=1; i<=N; i++){
1505  Observable=SubJetOrdering(Jet,Reclusterer,i,Type,kFALSE);
1506  if(Observable==-999){
1507  Error = kTRUE;
1508  return -2;
1509  }
1510  Fraction_Numerator=Fraction_Numerator+Observable;
1511  }
1512  }
1513  else {
1514  Fraction_Numerator=SubJetOrdering(Jet,Reclusterer,N,Type,kFALSE);
1515  if (Fraction_Numerator==-999) return -2;
1516  }
1517  if (Type==0){
1518  if(Loss) return (Jet->Pt()-Fraction_Numerator)/Jet->Pt();
1519  else return Fraction_Numerator/Jet->Pt();
1520  }
1521  else if (Type==1){
1522  if(Loss) return (Jet->E()-Fraction_Numerator)/Jet->E();
1523  else return Fraction_Numerator/Jet->E();
1524  }
1525  else { //change to else if if you want to add more later
1526  if(Loss) return (Jet->M()-Fraction_Numerator)/Jet->M();
1527  else return Fraction_Numerator/Jet->M();
1528  }
1529 }
1530 //N number of hardest subjets involved
1531 //Type 0=Pt 1=E 2=M
1532 // Add TRUE: Add 1 to Nth hardest subjets together/total jet False: Nth hardest Jet/toal jet
1533 //Loss TRUE: Jet-Subjet(s)/Jet FALSE: Subjet(s)/Jet
1534 
1535 
1536 //----------------------------------------------------------------------
1538  AliJetContainer *JetCont = GetJetContainer(JetContNb);
1539  AliEmcalJet *SubJet=NULL;
1540  Double_t DeltaR1=0;
1541  Double_t DeltaR2=0;
1542  AliVParticle *JetParticle=0x0;
1543  Double_t SubJetiness_Numerator = 0;
1544  Double_t SubJetiness_Denominator = 0;
1545  Double_t Index=-2;
1546  Bool_t Error=kFALSE;
1547  // JetRadius=TMath::Sqrt((Jet->Area()/TMath::Pi())); //comment out later
1548  if (!Jet->GetNumberOfTracks()) return -2;
1549  if (Reclusterer->GetNumberOfJets() < N) return -2;
1550  for (Int_t i=0; i< Jet->GetNumberOfTracks(); i++){ //loops through all tracks (particles in the jet
1551  JetParticle = static_cast<AliVParticle*>(Jet->TrackAt(i, JetCont->GetParticleContainer()->GetArray()));
1552  for (Int_t j=1; j<=N; j++){
1553  Index=SubJetOrdering(Jet,Reclusterer,j,0,kTRUE);
1554  if(Index==-999){
1555  Error = kTRUE;
1556  i=Jet->GetNumberOfTracks();
1557  break;
1558  }
1559  if(j==1){
1560  DeltaR1=TMath::Power((Reclusterer->GetJet(Index)->Pt()),A)*TMath::Power((TMath::Sqrt((((JetParticle->Eta())-(Reclusterer->GetJet(Index)->Eta()))*((JetParticle->Eta())- (Reclusterer->GetJet(Index)->Eta())))+((RelativePhi((Reclusterer->GetJet(Index)->Phi()),JetParticle->Phi()))*(RelativePhi((Reclusterer->GetJet(Index)->Phi()),JetParticle->Phi()))))),B);
1561  }
1562  else{
1563  DeltaR2=TMath::Power((Reclusterer->GetJet(Index)->Pt()),A)*TMath::Power((TMath::Sqrt((((JetParticle->Eta())-(Reclusterer->GetJet(Index)->Eta()))*((JetParticle->Eta())- (Reclusterer->GetJet(Index)->Eta())))+((RelativePhi((Reclusterer->GetJet(Index)->Phi()),JetParticle->Phi()))*(RelativePhi((Reclusterer->GetJet(Index)->Phi()),JetParticle->Phi()))))),B);
1564  if (DeltaR2<DeltaR1) DeltaR1=DeltaR2;
1565  }
1566  }
1567  SubJetiness_Numerator=SubJetiness_Numerator+(JetParticle->Pt()*DeltaR1);
1568  if (A>=0) SubJetiness_Denominator=SubJetiness_Denominator+(TMath::Power((Reclusterer->GetJet(SubJetOrdering(Jet,Reclusterer,1,0,kTRUE))->Pt()),A)*JetParticle->Pt()*TMath::Power(JetRadius,B));
1569  else SubJetiness_Denominator=SubJetiness_Denominator+(TMath::Power((Reclusterer->GetJet(SubJetOrdering(Jet,Reclusterer,N,0,kTRUE))->Pt()),A)*JetParticle->Pt()*TMath::Power(JetRadius,B));
1570  }
1571  if (SubJetiness_Denominator!=0 && !Error){
1572  // if (SubJetiness_Numerator/SubJetiness_Denominator>1.0) cout << JetRadius<<endl;
1573  return SubJetiness_Numerator/SubJetiness_Denominator; }
1574  else return -2;
1575 }
1576 
1577 
1578 //______________________________________________________________________________________
1580 
1581  //WARNING!!! Only works for parent jets that are clustered with Anti-Kt! To change go to AliEmcalJetFinder.cxx and look at the Nsubjettiness() function
1582 
1583  //Algorithm==0 -> kt_axes;
1584  // Algorithm==1 -> ca_axes;
1585  //Algorithm==2 -> antikt_0p2_axes;
1586  //Algorithm==3 -> wta_kt_axes;
1587  //Algorithm==4 -> wta_ca_axes;
1588  //Algorithm==5 -> onepass_kt_axes;
1589  //Algorithm==6 -> onepass_ca_axes;
1590  //Algorithm==7 -> onepass_antikt_0p2_axes;
1591  //Algorithm==8 -> onepass_wta_kt_axes;
1592  //Algorithm==9 -> onepass_wta_ca_axes;
1593  //Algorithm==10 -> min_axes;
1594 
1595 
1596  //Option==0 returns Nsubjettiness Value
1597  //Option==1 && N==2 returns opening angle between two subjet axes(Delta R?)
1598  //Option==2 && N==2 returns Delta R
1599  //Option==3 returns first splitting distance for soft dropped jet
1600  //Option==4 returns Symmetry measure (Zg) for soft dropped jet
1601  if (Jet->GetNumberOfTracks()>=N){
1602  if((fJetShapeSub==kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
1605  }
1606  else if((fJetShapeSub==kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
1609  }
1610  else if((fJetShapeSub==kDerivSub) && (JetContNb==0) && (N==3) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
1613  }
1614  else if((fJetShapeSub==kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==0) && (Beta==1.0) && (Option==1)){
1617  }
1618  else{
1619  AliJetContainer *JetCont = GetJetContainer(JetContNb);
1620  AliEmcalJetFinder *JetFinder=new AliEmcalJetFinder("Nsubjettiness");
1621  JetFinder->SetJetMaxEta(0.9-fJetRadius);
1622  JetFinder->SetRadius(fJetRadius);
1623  JetFinder->SetJetAlgorithm(0); //0 for anti-kt 1 for kt //this is for the JET!!!!!!!!!! Not the SubJets
1624  JetFinder->SetRecombSheme(0);
1625  JetFinder->SetJetMinPt(Jet->Pt());
1627  const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1628  Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
1629  return JetFinder->Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,fSubJetRadius,Beta,Option,0,Beta_SD,ZCut);
1630  }
1631  else{
1632  Double_t dVtx[3]={1,1,1};
1633  if (!fNsubMeasure){
1634  return JetFinder->Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,fSubJetRadius,Beta,Option,0,Beta_SD,ZCut);
1635  }
1636  else{
1637  if (Option==3) return JetFinder->Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,fSubJetRadius,Beta,Option,0,Beta_SD,ZCut);
1638  else return JetFinder->Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,fSubJetRadius,Beta,Option,1);
1639  }
1640  }
1641  }
1642  }
1643  else return -2;
1644 }
1645 
1646 
1647 //________________________________________________________________________
1649  //
1650  // retrieve event objects
1651  //
1653  return kFALSE;
1654 
1655  return kTRUE;
1656 }
1657 
1658 
1659 //_______________________________________________________________________
1661 {
1662  // Called once at the end of the analysis.
1664 
1665  /*
1666  for (int i=1; i<=(XBinsJetPtSize)-1; i++){ //Rescales the fhJetPt Histograms according to the with of the variable bins and number of events
1667  fhJetPt->SetBinContent(i,((1.0/(XBinsJetPt[i]-XBinsJetPt[i-1]))*((fhJetPt->GetBinContent(i))*(1.0/(fhEventCounter->GetBinContent(1))))));
1668  fhSubJetPt->SetBinContent(i,((1.0/(XBinsJetPt[i]-XBinsJetPt[i-1]))*((fhSubJetPt->GetBinContent(i))*(1.0/(fhEventCounter->GetBinContent(5))))));
1669 
1670  //fhJetPt->SetBinContent(i,((1.0/(fhPt->GetBinWidth(i)))*((fhJetPt->GetBinContent(i))*(fhEventCounter->GetBinContent(1)))));
1671  // fhJetPt->SetBinContent(i,((1.0/((fhPt->GetLowEdge(i+1))-(fhJetPt->GetLowEdge(i))))*((fhPt->GetBinContent(i))*(fhEventCounter->GetBinContent(1)))));
1672  }
1673  for (int i=1; i<=(XBinsJetMassSize)-1; i++){ //Rescales the fhPt Histograms according to the with of the variable bins and number of events
1674  fhJetMass->SetBinContent(i,((1.0/(XBinsJetMass[i]-XBinsJetMass[i-1]))*((fhJetMass->GetBinContent(i))*(1.0/(fhEventCounter->GetBinContent(1))))));
1675  }
1676 
1677  fhJetPhi->Scale(Phi_Bins/((Phi_Up-Phi_Low)*((fhEventCounter->GetBinContent(1)))));
1678  fhJetEta->Scale(Eta_Bins/((Eta_Up-Eta_Low)*((fhEventCounter->GetBinContent(1)))));
1679  fhJetRadius->Scale(100/(fhEventCounter->GetBinContent(4))); //should this and JetAngularity be divided by Bin 1 or 4????
1680  fhNumberOfJetTracks->Scale(1.0/(fhEventCounter->GetBinContent(4)));
1681 
1682  fhJetCounter->Scale(1.0/(fhEventCounter->GetBinContent(1))); //is the first bin the correct one to look at?
1683 
1684 
1685  fhSubJetCounter->Scale(1.0/(fhEventCounter->GetBinContent(5)));
1686 
1687  */
1688  /*
1689 
1690  fhJetPt->Scale(1.0/(fhEventCounter->GetBinContent(1)));
1691  fhSubJetPt->Scale(1.0/(fhEventCounter->GetBinContent(5)));
1692  fhJetMass->Scale(1.0/(fhEventCounter->GetBinContent(1)));
1693  fhJetPhi->Scale(1.0/(fhEventCounter->GetBinContent(1)));
1694  fhJetEta->Scale(1.0/(fhEventCounter->GetBinContent(1)));
1695  fhJetRadius->Scale(1.0/(fhEventCounter->GetBinContent(4))); //should this and JetAngularity be divided by Bin 1 or 4????
1696  fhNumberOfJetTracks->Scale(1.0/(fhEventCounter->GetBinContent(4)));
1697  fhJetCounter->Scale(1.0/(fhEventCounter->GetBinContent(1))); //is the first bin the correct one to look at?
1698  fhSubJetCounter->Scale(1.0/(fhEventCounter->GetBinContent(5)));
1699  */
1700  }
1701 
1702 }
void SetRadius(Double_t val)
Double_t Area() const
Definition: AliEmcalJet.h:117
double Double_t
Definition: External.C:58
Double_t XBinsPtSize
void SetJetMinPt(Double_t val)
static Double_t DeltaPhi(Double_t phia, Double_t phib, Double_t rMin=-TMath::Pi()/2, Double_t rMax=3 *TMath::Pi()/2)
Definition: External.C:236
AliEmcalJet * ClosestJet() const
Definition: AliEmcalJet.h:213
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t Eta() const
Definition: AliEmcalJet.h:108
Double_t Phi() const
Definition: AliEmcalJet.h:104
Container with name, TClonesArray and cuts for particles.
Double_t PTD(AliEmcalJet *Jet, Int_t JetContNb)
Double_t fEPV0
!event plane V0
Int_t GetLabel() const
Definition: AliEmcalJet.h:111
Double_t GetFirstOrderSubtracted2subjettiness_kt() const
Double_t NSubJettiness(AliEmcalJet *Jet, Int_t JetContNb, Double_t JetRadius, AliEmcalJetFinder *Reclusterer, Int_t N, Int_t A, Int_t B)
Double_t GetFirstOrderSubtractedOpeningAngle_kt() const
Double_t Nsubjettiness(AliEmcalJet *pJet, AliJetContainer *pContJets, Double_t dVtx[3], Int_t N, Int_t Algorithm, Double_t Radius, Double_t Beta, Int_t Option=0, Int_t Measure=0, Double_t Beta_SD=0, Double_t ZCut=0.1)
Double_t RelativePhi(Double_t Phi1, Double_t Phi2)
Double_t E() const
Definition: AliEmcalJet.h:106
Double_t XBinsJetMass[28]
UShort_t GetNumberOfTracks() const
Definition: AliEmcalJet.h:126
Double_t GetFirstOrderSubtracted3subjettiness_kt() const
TString kData
Declare data MC or deltaAOD.
Double_t GetSecondOrderSubtracted2subjettiness_kt() const
AliParticleContainer * GetParticleContainer() const
void SetRecombSheme(Int_t val)
void SetJetAlgorithm(Int_t val)
int Int_t
Definition: External.C:63
AliVParticle * GetLeadingTrack(TClonesArray *tracks) const
Double_t fjNSubJettiness(AliEmcalJet *Jet, Int_t JetContNb, Int_t N, Int_t Algorithm, Double_t Beta, Int_t Option=0, Double_t Beta_SD=0, Double_t ZCut=0.1)
ClassImp(AliAnalysisTaskSubJetFraction) AliAnalysisTaskSubJetFraction
float Float_t
Definition: External.C:68
Int_t GetNJets() const
Int_t SelectTriggerHadron(Float_t PtMin, Float_t PtMax)
Definition: External.C:228
Definition: External.C:212
Definition: Option.C:68
Double_t fCent
!event centrality
Double_t SubJetFraction(AliEmcalJet *Jet, AliEmcalJetFinder *Reclusterer, Int_t N, Int_t Type, Bool_t Add, Bool_t Loss)
void SetJetMaxEta(Double_t val)
AliEmcalJet * GetNextAcceptJet()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
AliEmcalJetFinder * Recluster(AliEmcalJet *Jet, Int_t JetContNb, Double_t SubJetRadius, Double_t SubJetMinPt, Int_t Algorithm, const char *Name)
AliEmcalJet * GetJet(Int_t index)
Double_t Pt() const
Definition: AliEmcalJet.h:96
Double_t GetRhoVal(Int_t i=0) const
Double_t XBinsPt[66]
AliEmcalList * fOutput
!output list
Short_t TrackAt(Int_t idx) const
Definition: AliEmcalJet.h:147
const Int_t nVar
AliTrackContainer * GetTrackContainer(Int_t i=0) const
void SetMakeGeneralHistograms(Bool_t g)
virtual AliVTrack * GetAcceptTrack(Int_t i=-1) const
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Double_t GetFirstOrderSubtracted1subjettiness_kt() const
Double_t Angularity(AliEmcalJet *Jet, Int_t JetContNb)
const char Option_t
Definition: External.C:48
Double_t RelativePhiEventPlane(Double_t EventPlane, Double_t Phi)
bool Bool_t
Definition: External.C:53
Double_t SubJetOrdering(AliEmcalJet *Jet, AliEmcalJetFinder *Reclusterer, Int_t N, Int_t Type, Bool_t Index)
AliEmcalJetShapeProperties * GetShapeProperties() const
Definition: AliEmcalJet.h:247
Double_t GetSecondOrderSubtracted3subjettiness_kt() const
Double_t XBinsJetPt[35]
Double_t M() const
Definition: AliEmcalJet.h:107
Double_t GetSecondOrderSubtracted1subjettiness_kt() const
Container for jet within the EMCAL jet framework.
Double_t GetSecondOrderSubtractedOpeningAngle_kt() const
AliEmcalJet * GetJet(Int_t i) const