6 #include <TClonesArray.h> 11 #include <THnSparse.h> 14 #include <TLorentzVector.h> 20 #include <AliAnalysisDataSlot.h> 21 #include <AliAnalysisDataContainer.h> 23 #include "TMatrixDSym.h" 24 #include "TMatrixDSymEigen.h" 27 #include "AliVCluster.h" 28 #include "AliVTrack.h" 33 #include "AliMCEvent.h" 34 #include "AliGenPythiaEventHeader.h" 35 #include "AliAODMCHeader.h" 36 #include "AliMCEvent.h" 37 #include "AliAnalysisManager.h" 44 #include "AliAODEvent.h" 52 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};
54 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};
56 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};
78 fMinFractionShared(0),
81 fJetSelection(kInclusive),
84 fPtMinTriggerHadron(20.),
85 fPtMaxTriggerHadron(50.),
86 fRecoilAngularWindow(0.6),
99 fSharedFractionPtMin(0.5),
104 fReclusteringAlgorithm(0),
106 fNsubMeasure(kFALSE),
107 fRandomisationEqualPt(kFALSE),
108 fhPtTriggerHadron(0x0),
127 fhNumberOfJetTracks(0x0),
128 fhNumberOfJetTracks_1(0x0),
129 fhNumberOfJetTracks_2(0x0),
137 fhSubJetRadius_1(0x0),
138 fhSubJetRadius_2(0x0),
139 fhSubJetCounter(0x0),
140 fhSubJetCounter_1(0x0),
141 fhSubJetCounter_2(0x0),
142 fhNumberOfSubJetTracks(0x0),
143 fhNumberOfSubJetTracks_1(0x0),
144 fhNumberOfSubJetTracks_2(0x0),
145 fh2PtTriggerHadronJet(0x0),
146 fhPhiTriggerHadronJet(0x0),
147 fhPhiTriggerHadronEventPlane(0x0),
148 fhPhiTriggerHadronEventPlaneTPC(0x0),
153 fhEventCounter_1(0x0),
154 fhEventCounter_2(0x0),
155 fhSubJettiness1CheckRatio_FJ_AKT(0x0),
156 fhSubJettiness1CheckRatio_FJ_KT(0x0),
157 fhSubJettiness1CheckRatio_FJ_CA(0x0),
158 fhSubJettiness1CheckRatio_FJ_WTA_KT(0x0),
159 fhSubJettiness1CheckRatio_FJ_WTA_CA(0x0),
160 fhSubJettiness1CheckRatio_FJ_OP_AKT(0x0),
161 fhSubJettiness1CheckRatio_FJ_OP_KT(0x0),
162 fhSubJettiness1CheckRatio_FJ_OP_CA(0x0),
163 fhSubJettiness1CheckRatio_FJ_OP_WTA_KT(0x0),
164 fhSubJettiness1CheckRatio_FJ_OP_WTA_CA(0x0),
165 fhSubJettiness1CheckRatio_FJ_MIN(0x0),
166 fhSubJettiness2CheckRatio_FJ_AKT(0x0),
167 fhSubJettiness2CheckRatio_FJ_KT(0x0),
168 fhSubJettiness2CheckRatio_FJ_CA(0x0),
169 fhSubJettiness2CheckRatio_FJ_WTA_KT(0x0),
170 fhSubJettiness2CheckRatio_FJ_WTA_CA(0x0),
171 fhSubJettiness2CheckRatio_FJ_OP_AKT(0x0),
172 fhSubJettiness2CheckRatio_FJ_OP_KT(0x0),
173 fhSubJettiness2CheckRatio_FJ_OP_CA(0x0),
174 fhSubJettiness2CheckRatio_FJ_OP_WTA_KT(0x0),
175 fhSubJettiness2CheckRatio_FJ_OP_WTA_CA(0x0),
176 fhSubJettiness2CheckRatio_FJ_MIN(0x0),
177 fhSubJettiness2to1CheckRatio_FJ_AKT(0x0),
178 fhSubJettiness2to1CheckRatio_FJ_KT(0x0),
179 fhSubJettiness2to1CheckRatio_FJ_CA(0x0),
180 fhSubJettiness2to1CheckRatio_FJ_WTA_KT(0x0),
181 fhSubJettiness2to1CheckRatio_FJ_WTA_CA(0x0),
182 fhSubJettiness2to1CheckRatio_FJ_OP_AKT(0x0),
183 fhSubJettiness2to1CheckRatio_FJ_OP_KT(0x0),
184 fhSubJettiness2to1CheckRatio_FJ_OP_CA(0x0),
185 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT(0x0),
186 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA(0x0),
187 fhSubJettiness2to1CheckRatio_FJ_MIN(0x0),
188 fhSubJettiness1_FJ_AKT(0x0),
189 fhSubJettiness1_FJ_KT(0x0),
190 fhSubJettiness1_FJ_CA(0x0),
191 fhSubJettiness1_FJ_WTA_KT(0x0),
192 fhSubJettiness1_FJ_WTA_CA(0x0),
193 fhSubJettiness1_FJ_OP_AKT(0x0),
194 fhSubJettiness1_FJ_OP_KT(0x0),
195 fhSubJettiness1_FJ_OP_CA(0x0),
196 fhSubJettiness1_FJ_OP_WTA_KT(0x0),
197 fhSubJettiness1_FJ_OP_WTA_CA(0x0),
198 fhSubJettiness1_FJ_MIN(0x0),
199 fhSubJettiness2_FJ_AKT(0x0),
200 fhSubJettiness2_FJ_KT(0x0),
201 fhSubJettiness2_FJ_CA(0x0),
202 fhSubJettiness2_FJ_WTA_KT(0x0),
203 fhSubJettiness2_FJ_WTA_CA(0x0),
204 fhSubJettiness2_FJ_OP_AKT(0x0),
205 fhSubJettiness2_FJ_OP_KT(0x0),
206 fhSubJettiness2_FJ_OP_CA(0x0),
207 fhSubJettiness2_FJ_OP_WTA_KT(0x0),
208 fhSubJettiness2_FJ_OP_WTA_CA(0x0),
209 fhSubJettiness2_FJ_MIN(0x0),
210 fhSubJettiness2to1_FJ_AKT(0x0),
211 fhSubJettiness2to1_FJ_KT(0x0),
212 fhSubJettiness2to1_FJ_CA(0x0),
213 fhSubJettiness2to1_FJ_WTA_KT(0x0),
214 fhSubJettiness2to1_FJ_WTA_CA(0x0),
215 fhSubJettiness2to1_FJ_OP_AKT(0x0),
216 fhSubJettiness2to1_FJ_OP_KT(0x0),
217 fhSubJettiness2to1_FJ_OP_CA(0x0),
218 fhSubJettiness2to1_FJ_OP_WTA_KT(0x0),
219 fhSubJettiness2to1_FJ_OP_WTA_CA(0x0),
220 fhSubJettiness2to1_FJ_MIN(0x0),
221 fTreeResponseMatrixAxis(0)
227 SetMakeGeneralHistograms(kTRUE);
228 DefineOutput(1, TList::Class());
229 DefineOutput(2, TTree::Class());
236 fMinFractionShared(0),
237 fJetShapeType(
kData),
238 fJetShapeSub(kNoSub),
239 fJetSelection(kInclusive),
240 fPtThreshold(-9999.),
242 fPtMinTriggerHadron(20.),
243 fPtMaxTriggerHadron(50.),
244 fRecoilAngularWindow(0.6),
249 fCentSelectOn(kTRUE),
257 fSharedFractionPtMin(0.5),
262 fReclusteringAlgorithm(0),
264 fNsubMeasure(kFALSE),
265 fRandomisationEqualPt(kFALSE),
266 fhPtTriggerHadron(0x0),
285 fhNumberOfJetTracks(0x0),
286 fhNumberOfJetTracks_1(0x0),
287 fhNumberOfJetTracks_2(0x0),
295 fhSubJetRadius_1(0x0),
296 fhSubJetRadius_2(0x0),
297 fhSubJetCounter(0x0),
298 fhSubJetCounter_1(0x0),
299 fhSubJetCounter_2(0x0),
300 fhNumberOfSubJetTracks(0x0),
301 fhNumberOfSubJetTracks_1(0x0),
302 fhNumberOfSubJetTracks_2(0x0),
303 fh2PtTriggerHadronJet(0x0),
304 fhPhiTriggerHadronJet(0x0),
305 fhPhiTriggerHadronEventPlane(0x0),
306 fhPhiTriggerHadronEventPlaneTPC(0x0),
311 fhEventCounter_1(0x0),
312 fhEventCounter_2(0x0),
313 fhSubJettiness1CheckRatio_FJ_AKT(0x0),
314 fhSubJettiness1CheckRatio_FJ_KT(0x0),
315 fhSubJettiness1CheckRatio_FJ_CA(0x0),
316 fhSubJettiness1CheckRatio_FJ_WTA_KT(0x0),
317 fhSubJettiness1CheckRatio_FJ_WTA_CA(0x0),
318 fhSubJettiness1CheckRatio_FJ_OP_AKT(0x0),
319 fhSubJettiness1CheckRatio_FJ_OP_KT(0x0),
320 fhSubJettiness1CheckRatio_FJ_OP_CA(0x0),
321 fhSubJettiness1CheckRatio_FJ_OP_WTA_KT(0x0),
322 fhSubJettiness1CheckRatio_FJ_OP_WTA_CA(0x0),
323 fhSubJettiness1CheckRatio_FJ_MIN(0x0),
324 fhSubJettiness2CheckRatio_FJ_AKT(0x0),
325 fhSubJettiness2CheckRatio_FJ_KT(0x0),
326 fhSubJettiness2CheckRatio_FJ_CA(0x0),
327 fhSubJettiness2CheckRatio_FJ_WTA_KT(0x0),
328 fhSubJettiness2CheckRatio_FJ_WTA_CA(0x0),
329 fhSubJettiness2CheckRatio_FJ_OP_AKT(0x0),
330 fhSubJettiness2CheckRatio_FJ_OP_KT(0x0),
331 fhSubJettiness2CheckRatio_FJ_OP_CA(0x0),
332 fhSubJettiness2CheckRatio_FJ_OP_WTA_KT(0x0),
333 fhSubJettiness2CheckRatio_FJ_OP_WTA_CA(0x0),
334 fhSubJettiness2CheckRatio_FJ_MIN(0x0),
335 fhSubJettiness2to1CheckRatio_FJ_AKT(0x0),
336 fhSubJettiness2to1CheckRatio_FJ_KT(0x0),
337 fhSubJettiness2to1CheckRatio_FJ_CA(0x0),
338 fhSubJettiness2to1CheckRatio_FJ_WTA_KT(0x0),
339 fhSubJettiness2to1CheckRatio_FJ_WTA_CA(0x0),
340 fhSubJettiness2to1CheckRatio_FJ_OP_AKT(0x0),
341 fhSubJettiness2to1CheckRatio_FJ_OP_KT(0x0),
342 fhSubJettiness2to1CheckRatio_FJ_OP_CA(0x0),
343 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT(0x0),
344 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA(0x0),
345 fhSubJettiness2to1CheckRatio_FJ_MIN(0x0),
346 fhSubJettiness1_FJ_AKT(0x0),
347 fhSubJettiness1_FJ_KT(0x0),
348 fhSubJettiness1_FJ_CA(0x0),
349 fhSubJettiness1_FJ_WTA_KT(0x0),
350 fhSubJettiness1_FJ_WTA_CA(0x0),
351 fhSubJettiness1_FJ_OP_AKT(0x0),
352 fhSubJettiness1_FJ_OP_KT(0x0),
353 fhSubJettiness1_FJ_OP_CA(0x0),
354 fhSubJettiness1_FJ_OP_WTA_KT(0x0),
355 fhSubJettiness1_FJ_OP_WTA_CA(0x0),
356 fhSubJettiness1_FJ_MIN(0x0),
357 fhSubJettiness2_FJ_AKT(0x0),
358 fhSubJettiness2_FJ_KT(0x0),
359 fhSubJettiness2_FJ_CA(0x0),
360 fhSubJettiness2_FJ_WTA_KT(0x0),
361 fhSubJettiness2_FJ_WTA_CA(0x0),
362 fhSubJettiness2_FJ_OP_AKT(0x0),
363 fhSubJettiness2_FJ_OP_KT(0x0),
364 fhSubJettiness2_FJ_OP_CA(0x0),
365 fhSubJettiness2_FJ_OP_WTA_KT(0x0),
366 fhSubJettiness2_FJ_OP_WTA_CA(0x0),
367 fhSubJettiness2_FJ_MIN(0x0),
368 fhSubJettiness2to1_FJ_AKT(0x0),
369 fhSubJettiness2to1_FJ_KT(0x0),
370 fhSubJettiness2to1_FJ_CA(0x0),
371 fhSubJettiness2to1_FJ_WTA_KT(0x0),
372 fhSubJettiness2to1_FJ_WTA_CA(0x0),
373 fhSubJettiness2to1_FJ_OP_AKT(0x0),
374 fhSubJettiness2to1_FJ_OP_KT(0x0),
375 fhSubJettiness2to1_FJ_OP_CA(0x0),
376 fhSubJettiness2to1_FJ_OP_WTA_KT(0x0),
377 fhSubJettiness2to1_FJ_OP_WTA_CA(0x0),
378 fhSubJettiness2to1_FJ_MIN(0x0),
379 fTreeResponseMatrixAxis(0)
387 DefineOutput(1, TList::Class());
388 DefineOutput(2, TTree::Class());
404 Bool_t oldStatus = TH1::AddDirectoryStatus();
405 TH1::AddDirectory(kFALSE);
406 TH1::AddDirectory(oldStatus);
408 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
413 fShapesVarNames[0] =
"Pt";
414 fShapesVarNames[1] =
"Pt_Truth";
415 fShapesVarNames[2] =
"Tau1";
416 fShapesVarNames[3] =
"Tau1_Truth";
417 fShapesVarNames[4] =
"Tau2";
418 fShapesVarNames[5] =
"Tau2_Truth";
419 fShapesVarNames[6] =
"Tau3";
420 fShapesVarNames[7] =
"Tau3_Truth";
421 fShapesVarNames[8] =
"OpeningAngle";
422 fShapesVarNames[9] =
"OpeningAngle_Truth";
423 fShapesVarNames[10] =
"JetMultiplicity";
424 fShapesVarNames[11] =
"JetMultiplicity_Truth";
425 fShapesVarNames[12] =
"OpeningAngleSD";
426 fShapesVarNames[13] =
"OpeningAngleSD_Truth";
427 fShapesVarNames[14] =
"Zg";
428 fShapesVarNames[15] =
"Zg_Truth";
429 fShapesVarNames[16] =
"LeadingTrackPt";
430 fShapesVarNames[17] =
"LeadingTrackPt_Truth";
431 fShapesVarNames[18] =
"EventPlaneTriggerHadron";
432 fShapesVarNames[19] =
"EventPlaneTriggerHadron_Truth";
433 fShapesVarNames[20] =
"EventPlaneTPCTriggerHadron";
434 fShapesVarNames[21] =
"EventPlaneTPCTriggerHadron_Truth";
435 fShapesVarNames[22] =
"DeltaR";
436 fShapesVarNames[23] =
"DeltaR_Truth";
437 fShapesVarNames[24] =
"Frac1";
438 fShapesVarNames[25] =
"Frac1_Truth";
439 fShapesVarNames[26] =
"Frac2";
440 fShapesVarNames[27] =
"Frac2_Truth";
442 cout<<
"looping over variables"<<endl;
448 const Int_t nVarMin = 22;
451 fShapesVarNames[0] =
"Pt";
452 fShapesVarNames[1] =
"Pt_Truth";
454 fShapesVarNames[2] =
"Tau1";
455 fShapesVarNames[3] =
"Tau1_Truth";
457 fShapesVarNames[4] =
"Tau2";
458 fShapesVarNames[5] =
"Tau2_Truth";
460 fShapesVarNames[6] =
"SubJet1LeadingTrackPt";
462 fShapesVarNames[7] =
"SubJet1LeadingTrackPt_Truth";
464 fShapesVarNames[8] =
"OpeningAngle";
465 fShapesVarNames[9] =
"OpeningAngle_Truth";
468 fShapesVarNames[10] =
"SubJet2LeadingTrackPt";
470 fShapesVarNames[11] =
"SubJet2LeadingTrackPt_Truth";
472 fShapesVarNames[12] =
"OpeningAngleSD";
474 fShapesVarNames[13] =
"OpeningAngleSD_Truth";
476 fShapesVarNames[14] =
"SubJet1Pt";
478 fShapesVarNames[15] =
"SubJet1Pt_Truth";
480 fShapesVarNames[16] =
"LeadingTrackPt";
482 fShapesVarNames[17] =
"LeadingTrackPt_Truth";
484 fShapesVarNames[18] =
"EventPlaneTriggerHadron";
487 fShapesVarNames[19] =
"EventPlaneTriggerHadron_Truth";
489 fShapesVarNames[20] =
"SubJet2Pt";
491 fShapesVarNames[21] =
"SubJet2Pt_Truth";
496 for(
Int_t ivar=0; ivar < nVarMin; ivar++){
497 cout<<
"looping over variables"<<endl;
503 fhPtTriggerHadron=
new TH1F(
"fhPtTriggerHadron",
"fhPtTriggerHadron",1500,-0.5,149.5);
507 fhPhiTriggerHadronJet=
new TH1F(
"fhPhiTriggerHadronJet",
"fhPhiTriggerHadronJet",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
509 fhPhiTriggerHadronEventPlane=
new TH1F(
"fhPhiTriggerHadronEventPlane",
"fhPhiTriggerHadronEventPlane",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
511 fhPhiTriggerHadronEventPlaneTPC=
new TH1F(
"fhPhiTriggerHadronEventPlaneTPC",
"fhPhiTriggerHadronEventPlaneTPC",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
517 fhJetPt=
new TH1F(
"fhJetPt",
"Jet Pt",1500,-0.5,149.5 );
521 fhJetPhi=
new TH1F(
"fhJetPhi",
"Jet Phi",780 , -7, 7);
525 fhJetMass=
new TH1F(
"fhJetMass",
"Jet Mass", 4000,-0.5, 39.5);
527 fhJetRadius=
new TH1F(
"fhJetRadius",
"Jet Radius", 100, -0.05,0.995);
529 fhNumberOfJetTracks=
new TH1F(
"fhNumberOfJetTracks",
"Number of Tracks within a Jet", 300, -0.5,299.5);
531 fhSubJetRadius=
new TH1F(
"fhSubJetRadius",
"SubJet Radius", 100, -0.05,0.995);
533 fhSubJetPt=
new TH1F(
"fhSubJetPt",
"SubJet Pt", 1500, -0.5,149.5);
535 fhSubJetMass=
new TH1F(
"fhSubJetMass",
"Sub Jet Mass", 4000,-0.5, 39.5);
537 fhNumberOfSubJetTracks=
new TH1F(
"fhNumberOfSubJetTracks",
"Number of Tracks within a Sub Jet", 300, -0.5,299.5);
539 fhJetCounter=
new TH1F(
"fhJetCounter",
"Jet Counter", 150, -0.5, 149.5);
541 fhSubJetCounter =
new TH1F(
"fhSubJetCounter",
"SubJet Counter",50, -0.5,49.5);
543 fhEventCounter=
new TH1F(
"fhEventCounter",
"Event Counter", 15,0.5,15.5);
545 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi",780 , -7, 7);
547 fhTrackPhi_Cut=
new TH1F(
"fhTrackPhi_Cut",
"fhTrackPhi_Cut",780 , -7, 7);
685 fhJetPt_1=
new TH1F(
"fhJetPt_1",
"Jet Pt Detector Level",1500,-0.5,149.5 );
687 fhJetPt_2=
new TH1F(
"fhJetPt_2",
"Jet Pt Particle Level",1500,-0.5,149.5 );
689 fhJetPhi_1=
new TH1F(
"fhJetPhi_1",
"Jet Phi Detector Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
691 fhJetPhi_2=
new TH1F(
"fhJetPhi_2",
"Jet Phi Particle Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
697 fhJetMass_1=
new TH1F(
"fhJetMass_1",
"Jet Mass Detector Level", 4000,-0.5, 39.5);
699 fhJetMass_2=
new TH1F(
"fhJetMass_2",
"Jet Mass Particle Level", 4000,-0.5, 39.5);
701 fhJetRadius_1=
new TH1F(
"fhJetRadius_1",
"Jet Radius Detector Level", 100, -0.05,0.995);
703 fhJetRadius_2=
new TH1F(
"fhJetRadius_2",
"Jet Radius Particle Level", 100, -0.05,0.995);
705 fhNumberOfJetTracks_1=
new TH1F(
"fhNumberOfJetTracks_1",
"Number of Tracks within a Jet Detector Level", 300, -0.5,299.5);
707 fhNumberOfJetTracks_2=
new TH1F(
"fhNumberOfJetTracks_2",
"Number of Tracks within a Jet Particle Level", 300, -0.5,299.5);
709 fhSubJetRadius_1=
new TH1F(
"fhSubJetRadius_1",
"SubJet Radius Detector Level", 100, -0.05,0.995);
711 fhSubJetRadius_2=
new TH1F(
"fhSubJetRadius_2",
"SubJet Radius Particle Level", 100, -0.05,0.995);
713 fhSubJetPt_1=
new TH1F(
"fhSubJetPt_1",
"SubJet Pt Detector Level", 1500, -0.5,149.5);
715 fhSubJetPt_2=
new TH1F(
"fhSubJetPt_2",
"SubJet Pt Particle Level", 1500, -0.5,149.5);
717 fhSubJetMass_1=
new TH1F(
"fhSubJetMass_1",
"Sub Jet Mass Detector Level", 4000,-0.5, 39.5);
719 fhSubJetMass_2=
new TH1F(
"fhSubJetMass_2",
"Sub Jet Mass Particle Level", 4000,-0.5, 39.5);
721 fhNumberOfSubJetTracks_1=
new TH1F(
"fhNumberOfSubJetTracks_1",
"Number of Tracks within a Sub Jet Detector Level", 300, -0.5,299.5);
723 fhNumberOfSubJetTracks_2=
new TH1F(
"fhNumberOfSubJetTracks_2",
"Number of Tracks within a Sub Jet Particle Level", 300, -0.5,299.5);
725 fhJetCounter_1=
new TH1F(
"fhJetCounter_1",
"Jet Counter Detector Level", 150, -0.5, 149.5);
727 fhJetCounter_2=
new TH1F(
"fhJetCounter_2",
"Jet Counter Particle Level", 150, -0.5, 149.5);
729 fhSubJetCounter_1 =
new TH1F(
"fhSubJetCounter_1",
"SubJet Counter Detector Level",50, -0.5,49.5);
731 fhSubJetCounter_2 =
new TH1F(
"fhSubJetCounter_2",
"SubJet Counter Particle Level",50, -0.5,49.5);
733 fh2PtRatio=
new TH2F(
"fhPtRatio",
"MC pt for detector level vs particle level jets",1500,-0.5,149.5,1500,-0.5,149.5);
735 fhEventCounter_1=
new TH1F(
"fhEventCounter_1",
"Event Counter Detector Level", 15,0.5,15.5);
737 fhEventCounter_2=
new TH1F(
"fhEventCounter_2",
"Event Counter Particle Level", 15,0.5,15.5);
739 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi",780 , -7, 7);
741 fhTrackPhi_Cut=
new TH1F(
"fhTrackPhi_Cut",
"fhTrackPhi_Cut",780 , -7, 7);
745 fhEventCounter=
new TH1F(
"fhEventCounter",
"Event Counter", 15,0.5,15.5);
803 TClonesArray *TracksArray_Particles = NULL;
804 TClonesArray *TracksArrayMC_Particles = NULL;
806 else if(PartCont_Particles) TracksArray_Particles = PartCont_Particles->GetArray();
808 AliAODTrack *Track_Particles = 0x0;
809 Int_t NTracks_Particles=0;
811 else if(TracksArray_Particles) NTracks_Particles = TracksArray_Particles->GetEntriesFast();
814 if (PartContMC_Particles && TracksArrayMC_Particles){
815 for(
Int_t i=0; i < NTracks_Particles; i++){
816 if((Track_Particles = static_cast<AliAODTrack*>(PartContMC_Particles->
GetAcceptParticle(i)))){
817 if (!Track_Particles)
continue;
818 if(TMath::Abs(Track_Particles->Eta())>0.9)
continue;
819 if (Track_Particles->Pt()<0.15)
continue;
821 if (Track_Particles->Pt()>=4.0)
fhTrackPhi_Cut->Fill(Track_Particles->Phi());
827 if (PartCont_Particles && TracksArray_Particles){
828 for(
Int_t i=0; i < NTracks_Particles; i++){
829 if((Track_Particles = static_cast<AliAODTrack*>(PartCont_Particles->
GetAcceptTrack(i)))){
830 if (!Track_Particles)
continue;
831 if(TMath::Abs(Track_Particles->Eta())>0.9)
continue;
832 if (Track_Particles->Pt()<0.15)
continue;
834 if (Track_Particles->Pt()>=4.0)
fhTrackPhi_Cut->Fill(Track_Particles->Phi());
841 AliAODTrack *TriggerHadron = 0x0;
845 if (TriggerHadronLabel==-99999)
return 0;
856 TClonesArray *TrackArray = NULL;
857 TClonesArray *TrackArrayMC = NULL;
859 else TrackArray = PartCont->GetArray();
861 else TriggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(TriggerHadronLabel));
862 if (!TriggerHadron)
return 0;
885 Bool_t JetsMatched=kFALSE;
886 Bool_t EventCounter=kFALSE;
892 JetCont1->ResetCurrentID();
896 if ( (!Jet1) || (JetPtThreshold<
fPtThreshold))
continue;
916 Jet2 = JetCont2->
GetJet(i);
921 if(JetNumber==-1)
continue;
922 Jet2=JetCont2->
GetJet(JetNumber);
952 fShapesVar[24]=
SubJetFraction(Jet1, Reclusterer1, 1, 0, kTRUE, kFALSE);
953 fShapesVar[26]=
SubJetFraction(Jet1, Reclusterer1, 2, 0, kTRUE, kFALSE);
956 fShapesVar[1]=Jet4->
Pt();
972 fShapesVar[25]=
SubJetFraction(Jet4, Reclusterer4, 1, 0, kTRUE, kFALSE);
973 fShapesVar[27]=
SubJetFraction(Jet4, Reclusterer4, 2, 0, kTRUE, kFALSE);
1009 Int_t JetCounter1=0;
1010 Int_t JetCounter2=0;
1013 Bool_t JetsMatched=kFALSE;
1015 Bool_t EventCounter=kFALSE;
1019 JetCont1->ResetCurrentID();
1050 JetPhi1=Jet1->
Phi();
1051 if(JetPhi1 < -1*TMath::Pi()) JetPhi1 += (2*TMath::Pi());
1052 else if (JetPhi1 > TMath::Pi()) JetPhi1 -= (2*TMath::Pi());
1069 JetPhi2=Jet2->
Phi();
1070 if(JetPhi2 < -1*TMath::Pi()) JetPhi2 += (2*TMath::Pi());
1071 else if (JetPhi2 > TMath::Pi()) JetPhi2 -= (2*TMath::Pi());
1178 Bool_t EventCounter=kFALSE;
1183 JetCont->ResetCurrentID();
1187 else JetPt_ForThreshold = Jet1->
Pt();
1283 Bool_t EventCounter=kFALSE;
1288 JetCont->ResetCurrentID();
1293 else JetPt_ForThreshold = Jet1->
Pt();
1324 if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
1325 else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
1331 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> Randomised_Jet=
ModifyJet(Jet1,0,
"Randomise");
1332 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_15=
ModifyJet(Jet1,0,
"AddExtraProng_02_15");
1333 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_30=
ModifyJet(Jet1,0,
"AddExtraProng_02_30");
1334 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_45=
ModifyJet(Jet1,0,
"AddExtraProng_02_45");
1335 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_60=
ModifyJet(Jet1,0,
"AddExtraProng_02_60");
1336 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_10=
ModifyJet(Jet1,0,
"AddExtraProng_01_10");
1337 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_15=
ModifyJet(Jet1,0,
"AddExtraProng_01_15");
1338 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_20=
ModifyJet(Jet1,0,
"AddExtraProng_01_20");
1339 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_25=
ModifyJet(Jet1,0,
"AddExtraProng_01_25");
1340 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_30=
ModifyJet(Jet1,0,
"AddExtraProng_01_30");
1341 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_45=
ModifyJet(Jet1,0,
"AddExtraProng_01_45");
1342 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_10=
ModifyJet(Jet1,0,
"AddExtraProng_03_10");
1343 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_15=
ModifyJet(Jet1,0,
"AddExtraProng_03_15");
1344 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_20=
ModifyJet(Jet1,0,
"AddExtraProng_03_20");
1345 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_30=
ModifyJet(Jet1,0,
"AddExtraProng_03_30");
1346 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_45=
ModifyJet(Jet1,0,
"AddExtraProng_03_45");
1349 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> kTTrack_1_2_1=
ModifyJet(Jet1,0,
"AddkTTrack_1_2_1");
1399 delete Randomised_Jet.second;
1400 delete ExtraProng_Jet_02_15.second;
1401 delete ExtraProng_Jet_02_30.second;
1402 delete ExtraProng_Jet_02_45.second;
1403 delete ExtraProng_Jet_02_60.second;
1404 delete ExtraProng_Jet_01_30.second;
1405 delete ExtraProng_Jet_01_45.second;
1406 delete ExtraProng_Jet_03_30.second;
1407 delete ExtraProng_Jet_03_45.second;
1419 if(Phi < -1*TMath::Pi()) Phi += (2*TMath::Pi());
1420 else if (Phi > TMath::Pi()) Phi -= (2*TMath::Pi());
1422 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1423 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1429 if(Phi1 < -1*TMath::Pi()) Phi1 += (2*TMath::Pi());
1430 else if (Phi1 > TMath::Pi()) Phi1 -= (2*TMath::Pi());
1431 if(Phi2 < -1*TMath::Pi()) Phi2 += (2*TMath::Pi());
1432 else if (Phi2 > TMath::Pi()) Phi2 -= (2*TMath::Pi());
1434 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1435 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1456 TClonesArray *TracksArray = NULL;
1457 TClonesArray *TracksArrayMC = NULL;
1459 else TracksArray = PartCont->GetArray();
1462 if(!PartContMC || !TracksArrayMC)
return -99999;
1465 if(!PartCont || !TracksArray)
return -99999;
1468 AliAODTrack *
Track = 0x0;
1469 Int_t Trigger_Index[100];
1470 for (
Int_t i=0; i<100; i++) Trigger_Index[i] = 0;
1471 Int_t Trigger_Counter = 0;
1474 else NTracks = TracksArray->GetEntriesFast();
1475 for(
Int_t i=0; i < NTracks; i++){
1478 if (!Track)
continue;
1479 if(TMath::Abs(Track->Eta())>0.9)
continue;
1480 if (Track->Pt()<0.15)
continue;
1481 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1482 Trigger_Index[Trigger_Counter] = i;
1488 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1489 if (!Track)
continue;
1490 if(TMath::Abs(Track->Eta())>0.9)
continue;
1491 if (Track->Pt()<0.15)
continue;
1492 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1493 Trigger_Index[Trigger_Counter] = i;
1499 if (Trigger_Counter == 0)
return -99999;
1500 Int_t RandomNumber = 0, Index = 0 ;
1501 TRandom3* Random =
new TRandom3(0);
1502 RandomNumber = Random->Integer(Trigger_Counter);
1503 Index = Trigger_Index[RandomNumber];
1514 AliVParticle *Particle=0x0;
1520 if(!Particle)
continue;
1522 Angularity_Numerator=Angularity_Numerator+(Particle->Pt()*TMath::Sqrt(((Particle->Eta()-Jet->
Eta())*(Particle->Eta()-Jet->
Eta()))+(DeltaPhi*
DeltaPhi)));
1523 Angularity_Denominator= Angularity_Denominator+Particle->Pt();
1525 if(Angularity_Denominator!=0)
return Angularity_Numerator/Angularity_Denominator;
1538 AliVParticle *Particle=0x0;
1542 if(!Particle)
continue;
1543 PTD_Numerator=PTD_Numerator+(Particle->Pt()*Particle->Pt());
1544 PTD_Denominator=PTD_Denominator+Particle->Pt();
1546 if(PTD_Denominator!=0)
return TMath::Sqrt(PTD_Numerator)/PTD_Denominator;
1564 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1565 Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
1566 if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;}
1570 if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;}
1582 Int_t ArraySize =N+1;
1584 TArrayD JetIndexSorter(ArraySize);
1585 for (
Int_t i=0; i<ArraySize; i++){
1588 for (
Int_t i=0; i<ArraySize; i++){
1589 JetIndexSorter[i]=0;
1593 SubJet=Reclusterer->
GetJet(i);
1594 if (Type==0) SortingVariable=SubJet->
Pt();
1595 else if (Type==1) SortingVariable=SubJet->
E();
1596 else if (Type==2) SortingVariable=SubJet->
M();
1597 for (
Int_t j=0; j<N; j++){
1598 if (SortingVariable>JetSorter[j]){
1599 for (
Int_t k=N-1; k>=j; k--){
1600 JetSorter[k+1]=JetSorter[k];
1601 JetIndexSorter[k+1]=JetIndexSorter[k];
1603 JetSorter[j]=SortingVariable;
1604 JetIndexSorter[j]=i;
1609 if (!Index)
return JetSorter[N-1];
1610 else return JetIndexSorter[N-1];
1633 for (
Int_t i=1; i<=N; i++){
1635 if(Observable==-999){
1639 Fraction_Numerator=Fraction_Numerator+Observable;
1643 Fraction_Numerator=
SubJetOrdering(Jet,Reclusterer,N,Type,kFALSE);
1644 if (Fraction_Numerator==-999)
return -2;
1647 if(Loss)
return (Jet->
Pt()-Fraction_Numerator)/Jet->
Pt();
1648 else return Fraction_Numerator/Jet->
Pt();
1651 if(Loss)
return (Jet->
E()-Fraction_Numerator)/Jet->
E();
1652 else return Fraction_Numerator/Jet->
E();
1655 if(Loss)
return (Jet->
M()-Fraction_Numerator)/Jet->
M();
1656 else return Fraction_Numerator/Jet->
M();
1671 AliVParticle *JetParticle=0x0;
1672 Double_t SubJetiness_Numerator = 0;
1673 Double_t SubJetiness_Denominator = 0;
1681 for (
Int_t j=1; j<=N; j++){
1689 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);
1692 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);
1693 if (DeltaR2<DeltaR1) DeltaR1=DeltaR2;
1696 SubJetiness_Numerator=SubJetiness_Numerator+(JetParticle->Pt()*DeltaR1);
1697 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));
1698 else SubJetiness_Denominator=SubJetiness_Denominator+(TMath::Power((Reclusterer->
GetJet(
SubJetOrdering(Jet,Reclusterer,N,0,kTRUE))->
Pt()),A)*JetParticle->Pt()*TMath::Power(JetRadius,B));
1700 if (SubJetiness_Denominator!=0 && !Error){
1702 return SubJetiness_Numerator/SubJetiness_Denominator; }
1742 if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
1746 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
1750 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==3) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
1754 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==0) && (Beta==1.0) && (Option==1)){
1758 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==1) && (Beta==1.0) && (Option==0)){
1762 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==1) && (Beta==1.0) && (Option==0)){
1766 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==1) && (Beta==1.0) && (Option==1)){
1770 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==2) && (Beta==1.0) && (Option==0)){
1774 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==2) && (Beta==1.0) && (Option==0)){
1778 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==2) && (Beta==1.0) && (Option==1)){
1782 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==6) && (Beta==1.0) && (Option==0)){
1786 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==6) && (Beta==1.0) && (Option==0)){
1790 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==6) && (Beta==1.0) && (Option==1)){
1804 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1805 Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
1806 return JetFinder.
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,
fSubJetRadius,Beta,Option,0,Beta_SD,ZCut,
fSoftDropOn);
1811 return JetFinder.
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,
fSubJetRadius,Beta,Option,0,Beta_SD,ZCut,
fSoftDropOn);
1814 if (Option==3)
return JetFinder.
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,
fSubJetRadius,Beta,Option,0,Beta_SD,ZCut,
fSoftDropOn);
1883 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> Jet_ClusterSequence;
1884 std::vector<fastjet::PseudoJet> fInputVectors;
1887 std::vector<fastjet::PseudoJet> Modified_Jet;
1888 fastjet::ClusterSequence *fClustSeqSA;
1891 AliVParticle *fTrk = Jet->
TrackAt(i, fTrackCont->GetArray());
1892 if (!fTrk)
continue;
1893 fastjet::PseudoJet PseudoTracks(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1894 PseudoTracks.set_user_index(Jet->
TrackAt(i)+100);
1895 fInputVectors.push_back(PseudoTracks);
1897 if (Modification==
"Randomise") fInputVectors=
RandomiseTracks(Jet,fInputVectors);
1898 if (Modification==
"AddExtraProng_02_15") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.15);
1899 if (Modification==
"AddExtraProng_02_30") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.30);
1900 if (Modification==
"AddExtraProng_02_45") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.45);
1901 if (Modification==
"AddExtraProng_02_60") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.60);
1902 if (Modification==
"AddExtraProng_01_10") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.10);
1903 if (Modification==
"AddExtraProng_01_15") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.15);
1904 if (Modification==
"AddExtraProng_01_20") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.20);
1905 if (Modification==
"AddExtraProng_01_25") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.25);
1906 if (Modification==
"AddExtraProng_01_30") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.30);
1907 if (Modification==
"AddExtraProng_01_45") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.45);
1908 if (Modification==
"AddExtraProng_03_10") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.10);
1909 if (Modification==
"AddExtraProng_03_15") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.15);
1910 if (Modification==
"AddExtraProng_03_20") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.20);
1911 if (Modification==
"AddExtraProng_03_30") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.30);
1912 if (Modification==
"AddExtraProng_03_45") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.45);
1913 if (Modification==
"AddkTTrack_1_2_1") fInputVectors=
AddkTTracks(Jet,fInputVectors,1.0,2.0,1);
1916 fastjet::JetDefinition fJetDef(fastjet::antikt_algorithm,
fJetRadius, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1917 fClustSeqSA=
new fastjet::ClusterSequence(fInputVectors, fJetDef);
1918 Modified_Jet=fClustSeqSA->inclusive_jets(0);
1919 Jet_ClusterSequence.second=fClustSeqSA;
1920 }
catch (fastjet::Error) {
1921 AliError(
" [w] FJ Exception caught.");
1925 Jet_ClusterSequence.first=Modified_Jet[0];
1926 return Jet_ClusterSequence;
1932 fRandom1.SetSeed(0);
1938 std::vector<fastjet::PseudoJet> Random_Track_Vector;
1939 Random_Track_Vector.clear();
1940 for (
Int_t i=0; i< fInputVectors.size(); i++){
1951 else Track_Pt=fInputVectors[i].perp();
1952 fastjet::PseudoJet Random_Track(Track_Pt*TMath::Cos(Random_Phi),Track_Pt*TMath::Sin(Random_Phi),Track_Pt*TMath::SinH(Random_Eta),TMath::Sqrt((Track_Pt*Track_Pt)+(Track_Pt*TMath::SinH(Random_Eta)*Track_Pt*TMath::SinH(Random_Eta))));
1953 Random_Track.set_user_index(i);
1954 Random_Track_Vector.push_back(Random_Track);
1956 fInputVectors.clear();
1957 return Random_Track_Vector;
1962 fRandom1.SetSeed(0);
1963 std::vector<fastjet::PseudoJet> Jet;
1966 fastjet::JetDefinition fJetDef(fastjet::antikt_algorithm,
fJetRadius*2, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1967 fastjet::ClusterSequence fClustSeqSA_Prong(fInputVectors, fJetDef);
1968 Jet= fClustSeqSA_Prong.inclusive_jets(0);
1969 }
catch (fastjet::Error) {
1970 AliError(
" [w] FJ Exception caught.");
1972 Double_t Extra_Track_Phi_Change=fRandom1.Uniform(-1*Distance,Distance);
1973 Double_t Extra_Track_Phi=Jet[0].phi()+Extra_Track_Phi_Change;
1974 Double_t Extra_Track_Eta_Change=fRandom1.Uniform(-1*(TMath::Sqrt((Distance*Distance)-(Extra_Track_Phi_Change*Extra_Track_Phi_Change))),TMath::Sqrt((Distance*Distance)-(Extra_Track_Phi_Change*Extra_Track_Phi_Change)));
1975 Double_t Extra_Track_Eta=Jet[0].pseudorapidity()+Extra_Track_Eta_Change;
1976 Double_t Extra_Track_Pt=Jet[0].perp()*PtFrac;
1977 fastjet::PseudoJet ExtraTrack(Extra_Track_Pt*TMath::Cos(Extra_Track_Phi),Extra_Track_Pt*TMath::Sin(Extra_Track_Phi),Extra_Track_Pt*TMath::SinH(Extra_Track_Eta),TMath::Sqrt((Extra_Track_Pt*Extra_Track_Pt)+(Extra_Track_Pt*TMath::SinH(Extra_Track_Eta)*Extra_Track_Pt*TMath::SinH(Extra_Track_Eta))));
1978 ExtraTrack.set_user_index(150);
1979 fInputVectors.push_back(ExtraTrack);
1980 return fInputVectors;
1986 fastjet::PseudoJet Lab_Jet;
1987 Lab_Jet.reset(Jet->
Px(),Jet->
Py(),Jet->
Pz(),Jet->
E());
1990 Double_t xQs=TMath::Sqrt(QHat*XLength);
1993 for(
Int_t i=0;i<NAdditionalTracks;i++){
1995 Double_t kT_Scale,Limit_Min,Limit_Max;
1998 TF1 *kT_Func=
new TF1(
"kT_Func",
"1/(x*x*x*x)",xQs*xQs,10000);
1999 kT_Scale=kT_Func->GetRandom();
2005 Limit_Max=kT_Scale/TMath::Sin(0.01);
2006 TF1 *Omega_Func=
new TF1(
"Omega_Func",
"1/x",Limit_Min,Limit_Max);
2007 Double_t Omega=Omega_Func->GetRandom();
2009 Double_t Theta=TMath::ASin(kT_Scale/Omega);
2013 fastjet::PseudoJet ExtraTrack(kT_Scale/TMath::Sqrt(2),kT_Scale/TMath::Sqrt(2),Omega*TMath::Cos(Theta),Omega);
2015 fastjet::PseudoJet ExtraTrack_LabFrame=ExtraTrack.boost(Lab_Jet);
2017 fInputVectors.push_back(ExtraTrack_LabFrame);
2021 return fInputVectors;
2062 fastjet::PseudoJet Jet=Jet_ClusterSequence.first;
2067 FJWrapper.
SetRecombScheme(static_cast<fastjet::RecombinationScheme>(0));
2068 if (Jet.constituents().size()>=N){
2071 return FJWrapper.
NSubjettinessDerivativeSub(N,Algorithm,
fSubJetRadius,Beta,
fJetRadius,Jet,Option,0,Beta_SD,ZCut,
fSoftDropOn);
TH1D * fhSubJettiness1_FJ_OP_CA
TH1D * fhSubJettiness1_FJ_WTA_CA
void SetRadius(Double_t val)
Bool_t fCentSelectOn
Random number generator.
TH2D * fhSubJettiness1CheckRatio_FJ_OP_CA
TH2D * fhSubJettiness2to1CheckRatio_FJ_AKT
TH2D * fhSubJettiness2CheckRatio_FJ_WTA_CA
TH1F * fhNumberOfJetTracks
Float_t fPtMinTriggerHadron
TH1D * fhSubJettiness2to1_FJ_MIN
TH2D * fhSubJettiness2CheckRatio_FJ_OP_WTA_CA
TH2D * fhSubJettiness1CheckRatio_FJ_OP_KT
void SetJetMinPt(Double_t val)
TH2D * fhSubJettiness2to1CheckRatio_FJ_MIN
Double_t GetSecondOrderSubtracted1subjettiness_akt02() const
TH2D * fhSubJettiness1CheckRatio_FJ_KT
static Double_t DeltaPhi(Double_t phia, Double_t phib, Double_t rMin=-TMath::Pi()/2, Double_t rMax=3 *TMath::Pi()/2)
AliVParticle * GetLeadingTrack(TClonesArray *tracks=0) const
AliEmcalJet * ClosestJet() const
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
AliJetContainer * GetJetContainer(Int_t i=0) const
TH1D * fhSubJettiness2_FJ_CA
TH2D * fhSubJettiness1CheckRatio_FJ_AKT
Float_t fRecoilAngularWindow
TH1D * fhSubJettiness2to1_FJ_OP_WTA_KT
Container with name, TClonesArray and cuts for particles.
Int_t fReclusteringAlgorithm
std::pair< fastjet::PseudoJet, fastjet::ClusterSequence * > ModifyJet(AliEmcalJet *Jet, Int_t JetContNb, TString Modification)
Double_t GetFirstOrderSubtractedOpeningAngle_onepassca() const
Double_t PTD(AliEmcalJet *Jet, Int_t JetContNb)
Double_t GetSecondOrderSubtracted2subjettiness_akt02() const
Double_t fSharedFractionPtMin
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
Double_t fEPV0
!event plane V0
std::vector< fastjet::PseudoJet > AddExtraProng(std::vector< fastjet::PseudoJet > fInputVectors, Double_t Distance, Double_t PtFrac)
TH1D * fhSubJettiness1_FJ_OP_WTA_CA
TH2D * fhSubJettiness2CheckRatio_FJ_MIN
Double_t GetFirstOrderSubtracted2subjettiness_kt() const
void Terminate(Option_t *option)
TH1D * fhSubJettiness2to1_FJ_CA
void SetMinJetPt(Double_t MinPt)
TH1D * fhSubJettiness2to1_FJ_AKT
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
Bool_t RetrieveEventObjects()
void SetRecombScheme(const fastjet::RecombinationScheme &scheme)
TH2F * fh2PtTriggerHadronJet
Double_t GetSecondOrderSubtractedOpeningAngle_akt02() const
Double_t RelativePhi(Double_t Phi1, Double_t Phi2)
TH1D * fhSubJettiness1_FJ_MIN
TH2D * fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT
TH1D * fhSubJettiness2to1_FJ_WTA_KT
TH1D * fhSubJettiness2to1_FJ_OP_WTA_CA
TH2D * fhSubJettiness1CheckRatio_FJ_OP_AKT
TH2D * fhSubJettiness2CheckRatio_FJ_OP_CA
TH1F * fhNumberOfJetTracks_2
TH1F * fhNumberOfSubJetTracks_1
Bool_t FillHistograms()
Function filling histograms.
Double_t GetFirstOrderSubtracted2subjettiness_ca() const
TH1D * fhSubJettiness1_FJ_OP_AKT
TH1D * fhSubJettiness2to1_FJ_WTA_CA
Container for particles within the EMCAL framework.
Double_t XBinsJetMass[28]
Double_t GetFirstOrderSubtractedOpeningAngle_ca() const
Int_t TrackAt(Int_t idx) const
TH2D * fhSubJettiness2to1CheckRatio_FJ_OP_KT
UShort_t GetNumberOfTracks() const
Double_t GetFirstOrderSubtracted3subjettiness_kt() const
TString kData
Declare data MC or deltaAOD.
Double_t GetSecondOrderSubtracted2subjettiness_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, Int_t SoftDropOn=0)
TH2D * fhSubJettiness2to1CheckRatio_FJ_WTA_CA
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
AliParticleContainer * GetParticleContainer() const
void SetRecombSheme(Int_t val)
Double_t GetSecondOrderSubtracted1subjettiness_onepassca() const
void SetJetAlgorithm(Int_t val)
TH1F * fhNumberOfSubJetTracks
Double_t GetSecondOrderSubtracted1subjettiness_ca() const
TH2D * fhSubJettiness2to1CheckRatio_FJ_KT
TH2D * fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA
virtual ~AliAnalysisTaskSubJetFraction()
TH1D * fhSubJettiness2_FJ_WTA_KT
Double_t GetFirstOrderSubtracted2subjettiness_akt02() const
TH1F * fhPhiTriggerHadronEventPlane
TH1D * fhSubJettiness2_FJ_OP_WTA_KT
void SetAlgorithm(const fastjet::JetAlgorithm &algor)
Int_t SelectTriggerHadron(Float_t PtMin, Float_t PtMax)
TH2D * fhSubJettiness2CheckRatio_FJ_KT
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
Double_t GetSecondOrderSubtracted2subjettiness_ca() const
TH1D * fhSubJettiness2_FJ_KT
TH2D * fhSubJettiness2to1CheckRatio_FJ_WTA_KT
TH1D * fhSubJettiness1_FJ_KT
Double_t fCent
!event centrality
TH2D * fhSubJettiness1CheckRatio_FJ_OP_WTA_CA
TH2D * fhSubJettiness2CheckRatio_FJ_OP_WTA_KT
Double_t GetFirstOrderSubtracted2subjettiness_onepassca() const
Double_t SubJetFraction(AliEmcalJet *Jet, AliEmcalJetFinder *Reclusterer, Int_t N, Int_t Type, Bool_t Add, Bool_t Loss)
JetSelectionType fJetSelection
TH1D * fhSubJettiness2_FJ_OP_WTA_CA
void SetJetMaxEta(Double_t val)
TH1D * fhSubJettiness2to1_FJ_OP_AKT
Double_t GetSecondOrderSubtractedOpeningAngle_onepassca() const
TH1D * fhSubJettiness1_FJ_OP_WTA_KT
TH1D * fhSubJettiness2_FJ_OP_CA
AliAnalysisTaskSubJetFraction()
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)
TH2D * fhSubJettiness1CheckRatio_FJ_WTA_KT
TH1D * fhSubJettiness2to1_FJ_OP_KT
TH1F * fhPhiTriggerHadronJet
AliEmcalJet * GetJet(Int_t index)
TTree * fTreeResponseMatrixAxis
Double_t FjNSubJettinessFastJet(std::pair< fastjet::PseudoJet, fastjet::ClusterSequence * > Jet_ClusterSequence, 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)
TH2D * fhSubJettiness1CheckRatio_FJ_MIN
Double_t GetSecondOrderSubtracted2subjettiness_onepassca() const
TH1F * fhNumberOfSubJetTracks_2
TH1D * fhSubJettiness1_FJ_AKT
Double_t GetRhoVal(Int_t i=0) const
TH2D * fhSubJettiness1CheckRatio_FJ_CA
Double_t GetFirstOrderSubtractedOpeningAngle_akt02() const
Double_t GetFirstOrderSubtracted1subjettiness_akt02() const
TH1D * fhSubJettiness2_FJ_MIN
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)
TH1D * fhSubJettiness1_FJ_WTA_KT
AliEmcalList * fOutput
!output list
TH2D * fhSubJettiness2to1CheckRatio_FJ_CA
JetShapeType fJetShapeType
TH1D * fhSubJettiness2to1_FJ_OP_CA
std::vector< fastjet::PseudoJet > RandomiseTracks(AliEmcalJet *Jet, std::vector< fastjet::PseudoJet > fInputVectors)
Double_t GetFirstOrderSubtracted1subjettiness_onepassca() const
TH2D * fhSubJettiness2to1CheckRatio_FJ_OP_CA
TH1F * fhNumberOfJetTracks_1
TH1D * fhSubJettiness2_FJ_WTA_CA
TH1D * fhSubJettiness2_FJ_OP_AKT
TH2D * fhSubJettiness1CheckRatio_FJ_OP_WTA_KT
TH1D * fhSubJettiness2to1_FJ_KT
AliTrackContainer * GetTrackContainer(Int_t i=0) const
Float_t fPtMaxTriggerHadron
TH2D * fhSubJettiness2to1CheckRatio_FJ_OP_AKT
void SetMakeGeneralHistograms(Bool_t g)
TH2D * fhSubJettiness2CheckRatio_FJ_OP_AKT
virtual AliVTrack * GetAcceptTrack(Int_t i=-1) const
Base task in the EMCAL jet framework.
Double_t GetFirstOrderSubtracted1subjettiness_ca() const
Represent a jet reconstructed using the EMCal jet framework.
Double_t GetFirstOrderSubtracted1subjettiness_kt() const
Double_t Angularity(AliEmcalJet *Jet, Int_t JetContNb)
Double32_t NSubjettinessDerivativeSub(Int_t N, Int_t Algorithm, Double_t Radius, Double_t Beta, Double_t JetR, fastjet::PseudoJet jet, Int_t Option=0, Int_t Measure=0, Double_t Beta_SD=0.0, Double_t ZCut=0.1, Int_t SoftDropOn=0)
Double_t RelativePhiEventPlane(Double_t EventPlane, Double_t Phi)
void UserCreateOutputObjects()
Main initialization function on the worker.
std::vector< fastjet::PseudoJet > AddkTTracks(AliEmcalJet *Jet, std::vector< fastjet::PseudoJet > fInputVectors, Double_t QHat, Double_t Xlength, Int_t NAdditionalTracks)
void UserCreateOutputObjects()
Bool_t fRandomisationEqualPt
TH1D * fhSubJettiness2_FJ_AKT
TH1D * fhSubJettiness1_FJ_CA
Double_t SubJetOrdering(AliEmcalJet *Jet, AliEmcalJetFinder *Reclusterer, Int_t N, Int_t Type, Bool_t Index)
AliEmcalJetShapeProperties * GetShapeProperties() const
Double_t GetSecondOrderSubtracted3subjettiness_kt() const
Double_t fShapesVar[nVar]
TH1D * fhSubJettiness1_FJ_OP_KT
TH2D * fhSubJettiness2CheckRatio_FJ_AKT
TH2D * fhSubJettiness2CheckRatio_FJ_CA
TH2D * fhSubJettiness2CheckRatio_FJ_WTA_KT
TH1D * fhSubJettiness2_FJ_OP_KT
Double_t GetSecondOrderSubtracted1subjettiness_kt() const
Container for jet within the EMCAL jet framework.
Double_t GetSecondOrderSubtractedOpeningAngle_ca() const
TH1F * fhPhiTriggerHadronEventPlaneTPC
TH2D * fhSubJettiness1CheckRatio_FJ_WTA_CA
Double_t GetSecondOrderSubtractedOpeningAngle_kt() const
AliEmcalJet * GetJet(Int_t i) const
TH2D * fhSubJettiness2CheckRatio_FJ_OP_KT