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" 53 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};
55 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};
57 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};
79 fMinFractionShared(0),
82 fJetSelection(kInclusive),
85 fPtMinTriggerHadron(20.),
86 fPtMaxTriggerHadron(50.),
87 fRecoilAngularWindow(0.6),
100 fSharedFractionPtMin(0.5),
105 fReclusteringAlgorithm(0),
108 fNsubMeasure(kFALSE),
109 fRandomisationEqualPt(kFALSE),
110 fhPtTriggerHadron(0x0),
129 fhNumberOfJetTracks(0x0),
130 fhNumberOfJetTracks_1(0x0),
131 fhNumberOfJetTracks_2(0x0),
139 fhSubJetRadius_1(0x0),
140 fhSubJetRadius_2(0x0),
141 fhSubJetCounter(0x0),
142 fhSubJetCounter_1(0x0),
143 fhSubJetCounter_2(0x0),
144 fhNumberOfSubJetTracks(0x0),
145 fhNumberOfSubJetTracks_1(0x0),
146 fhNumberOfSubJetTracks_2(0x0),
147 fh2PtTriggerHadronJet(0x0),
148 fhPhiTriggerHadronJet(0x0),
149 fhPhiTriggerHadronEventPlane(0x0),
150 fhPhiTriggerHadronEventPlaneTPC(0x0),
155 fhEventCounter_1(0x0),
156 fhEventCounter_2(0x0),
157 fhSubJettiness1CheckRatio_FJ_AKT(0x0),
158 fhSubJettiness1CheckRatio_FJ_KT(0x0),
159 fhSubJettiness1CheckRatio_FJ_CA(0x0),
160 fhSubJettiness1CheckRatio_FJ_WTA_KT(0x0),
161 fhSubJettiness1CheckRatio_FJ_WTA_CA(0x0),
162 fhSubJettiness1CheckRatio_FJ_OP_AKT(0x0),
163 fhSubJettiness1CheckRatio_FJ_OP_KT(0x0),
164 fhSubJettiness1CheckRatio_FJ_OP_CA(0x0),
165 fhSubJettiness1CheckRatio_FJ_OP_WTA_KT(0x0),
166 fhSubJettiness1CheckRatio_FJ_OP_WTA_CA(0x0),
167 fhSubJettiness1CheckRatio_FJ_MIN(0x0),
168 fhSubJettiness2CheckRatio_FJ_AKT(0x0),
169 fhSubJettiness2CheckRatio_FJ_KT(0x0),
170 fhSubJettiness2CheckRatio_FJ_CA(0x0),
171 fhSubJettiness2CheckRatio_FJ_WTA_KT(0x0),
172 fhSubJettiness2CheckRatio_FJ_WTA_CA(0x0),
173 fhSubJettiness2CheckRatio_FJ_OP_AKT(0x0),
174 fhSubJettiness2CheckRatio_FJ_OP_KT(0x0),
175 fhSubJettiness2CheckRatio_FJ_OP_CA(0x0),
176 fhSubJettiness2CheckRatio_FJ_OP_WTA_KT(0x0),
177 fhSubJettiness2CheckRatio_FJ_OP_WTA_CA(0x0),
178 fhSubJettiness2CheckRatio_FJ_MIN(0x0),
179 fhSubJettiness2to1CheckRatio_FJ_AKT(0x0),
180 fhSubJettiness2to1CheckRatio_FJ_KT(0x0),
181 fhSubJettiness2to1CheckRatio_FJ_CA(0x0),
182 fhSubJettiness2to1CheckRatio_FJ_WTA_KT(0x0),
183 fhSubJettiness2to1CheckRatio_FJ_WTA_CA(0x0),
184 fhSubJettiness2to1CheckRatio_FJ_OP_AKT(0x0),
185 fhSubJettiness2to1CheckRatio_FJ_OP_KT(0x0),
186 fhSubJettiness2to1CheckRatio_FJ_OP_CA(0x0),
187 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT(0x0),
188 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA(0x0),
189 fhSubJettiness2to1CheckRatio_FJ_MIN(0x0),
190 fhSubJettiness1_FJ_AKT(0x0),
191 fhSubJettiness1_FJ_KT(0x0),
192 fhSubJettiness1_FJ_CA(0x0),
193 fhSubJettiness1_FJ_WTA_KT(0x0),
194 fhSubJettiness1_FJ_WTA_CA(0x0),
195 fhSubJettiness1_FJ_OP_AKT(0x0),
196 fhSubJettiness1_FJ_OP_KT(0x0),
197 fhSubJettiness1_FJ_OP_CA(0x0),
198 fhSubJettiness1_FJ_OP_WTA_KT(0x0),
199 fhSubJettiness1_FJ_OP_WTA_CA(0x0),
200 fhSubJettiness1_FJ_MIN(0x0),
201 fhSubJettiness2_FJ_AKT(0x0),
202 fhSubJettiness2_FJ_KT(0x0),
203 fhSubJettiness2_FJ_CA(0x0),
204 fhSubJettiness2_FJ_WTA_KT(0x0),
205 fhSubJettiness2_FJ_WTA_CA(0x0),
206 fhSubJettiness2_FJ_OP_AKT(0x0),
207 fhSubJettiness2_FJ_OP_KT(0x0),
208 fhSubJettiness2_FJ_OP_CA(0x0),
209 fhSubJettiness2_FJ_OP_WTA_KT(0x0),
210 fhSubJettiness2_FJ_OP_WTA_CA(0x0),
211 fhSubJettiness2_FJ_MIN(0x0),
212 fhSubJettiness2to1_FJ_AKT(0x0),
213 fhSubJettiness2to1_FJ_KT(0x0),
214 fhSubJettiness2to1_FJ_CA(0x0),
215 fhSubJettiness2to1_FJ_WTA_KT(0x0),
216 fhSubJettiness2to1_FJ_WTA_CA(0x0),
217 fhSubJettiness2to1_FJ_OP_AKT(0x0),
218 fhSubJettiness2to1_FJ_OP_KT(0x0),
219 fhSubJettiness2to1_FJ_OP_CA(0x0),
220 fhSubJettiness2to1_FJ_OP_WTA_KT(0x0),
221 fhSubJettiness2to1_FJ_OP_WTA_CA(0x0),
222 fhSubJettiness2to1_FJ_MIN(0x0),
223 fShapesVar_Tracks_Rec(0),
224 fShapesVar_Tracks_Truth(0),
225 fTreeResponseMatrixAxis(0),
232 SetMakeGeneralHistograms(kTRUE);
233 DefineOutput(1, TList::Class());
234 DefineOutput(2, TTree::Class());
235 DefineOutput(3, TTree::Class());
242 fMinFractionShared(0),
243 fJetShapeType(
kData),
244 fJetShapeSub(kNoSub),
245 fJetSelection(kInclusive),
246 fPtThreshold(-9999.),
248 fPtMinTriggerHadron(20.),
249 fPtMaxTriggerHadron(50.),
250 fRecoilAngularWindow(0.6),
255 fCentSelectOn(kTRUE),
263 fSharedFractionPtMin(0.5),
268 fReclusteringAlgorithm(0),
271 fNsubMeasure(kFALSE),
272 fRandomisationEqualPt(kFALSE),
273 fhPtTriggerHadron(0x0),
292 fhNumberOfJetTracks(0x0),
293 fhNumberOfJetTracks_1(0x0),
294 fhNumberOfJetTracks_2(0x0),
302 fhSubJetRadius_1(0x0),
303 fhSubJetRadius_2(0x0),
304 fhSubJetCounter(0x0),
305 fhSubJetCounter_1(0x0),
306 fhSubJetCounter_2(0x0),
307 fhNumberOfSubJetTracks(0x0),
308 fhNumberOfSubJetTracks_1(0x0),
309 fhNumberOfSubJetTracks_2(0x0),
310 fh2PtTriggerHadronJet(0x0),
311 fhPhiTriggerHadronJet(0x0),
312 fhPhiTriggerHadronEventPlane(0x0),
313 fhPhiTriggerHadronEventPlaneTPC(0x0),
318 fhEventCounter_1(0x0),
319 fhEventCounter_2(0x0),
320 fhSubJettiness1CheckRatio_FJ_AKT(0x0),
321 fhSubJettiness1CheckRatio_FJ_KT(0x0),
322 fhSubJettiness1CheckRatio_FJ_CA(0x0),
323 fhSubJettiness1CheckRatio_FJ_WTA_KT(0x0),
324 fhSubJettiness1CheckRatio_FJ_WTA_CA(0x0),
325 fhSubJettiness1CheckRatio_FJ_OP_AKT(0x0),
326 fhSubJettiness1CheckRatio_FJ_OP_KT(0x0),
327 fhSubJettiness1CheckRatio_FJ_OP_CA(0x0),
328 fhSubJettiness1CheckRatio_FJ_OP_WTA_KT(0x0),
329 fhSubJettiness1CheckRatio_FJ_OP_WTA_CA(0x0),
330 fhSubJettiness1CheckRatio_FJ_MIN(0x0),
331 fhSubJettiness2CheckRatio_FJ_AKT(0x0),
332 fhSubJettiness2CheckRatio_FJ_KT(0x0),
333 fhSubJettiness2CheckRatio_FJ_CA(0x0),
334 fhSubJettiness2CheckRatio_FJ_WTA_KT(0x0),
335 fhSubJettiness2CheckRatio_FJ_WTA_CA(0x0),
336 fhSubJettiness2CheckRatio_FJ_OP_AKT(0x0),
337 fhSubJettiness2CheckRatio_FJ_OP_KT(0x0),
338 fhSubJettiness2CheckRatio_FJ_OP_CA(0x0),
339 fhSubJettiness2CheckRatio_FJ_OP_WTA_KT(0x0),
340 fhSubJettiness2CheckRatio_FJ_OP_WTA_CA(0x0),
341 fhSubJettiness2CheckRatio_FJ_MIN(0x0),
342 fhSubJettiness2to1CheckRatio_FJ_AKT(0x0),
343 fhSubJettiness2to1CheckRatio_FJ_KT(0x0),
344 fhSubJettiness2to1CheckRatio_FJ_CA(0x0),
345 fhSubJettiness2to1CheckRatio_FJ_WTA_KT(0x0),
346 fhSubJettiness2to1CheckRatio_FJ_WTA_CA(0x0),
347 fhSubJettiness2to1CheckRatio_FJ_OP_AKT(0x0),
348 fhSubJettiness2to1CheckRatio_FJ_OP_KT(0x0),
349 fhSubJettiness2to1CheckRatio_FJ_OP_CA(0x0),
350 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_KT(0x0),
351 fhSubJettiness2to1CheckRatio_FJ_OP_WTA_CA(0x0),
352 fhSubJettiness2to1CheckRatio_FJ_MIN(0x0),
353 fhSubJettiness1_FJ_AKT(0x0),
354 fhSubJettiness1_FJ_KT(0x0),
355 fhSubJettiness1_FJ_CA(0x0),
356 fhSubJettiness1_FJ_WTA_KT(0x0),
357 fhSubJettiness1_FJ_WTA_CA(0x0),
358 fhSubJettiness1_FJ_OP_AKT(0x0),
359 fhSubJettiness1_FJ_OP_KT(0x0),
360 fhSubJettiness1_FJ_OP_CA(0x0),
361 fhSubJettiness1_FJ_OP_WTA_KT(0x0),
362 fhSubJettiness1_FJ_OP_WTA_CA(0x0),
363 fhSubJettiness1_FJ_MIN(0x0),
364 fhSubJettiness2_FJ_AKT(0x0),
365 fhSubJettiness2_FJ_KT(0x0),
366 fhSubJettiness2_FJ_CA(0x0),
367 fhSubJettiness2_FJ_WTA_KT(0x0),
368 fhSubJettiness2_FJ_WTA_CA(0x0),
369 fhSubJettiness2_FJ_OP_AKT(0x0),
370 fhSubJettiness2_FJ_OP_KT(0x0),
371 fhSubJettiness2_FJ_OP_CA(0x0),
372 fhSubJettiness2_FJ_OP_WTA_KT(0x0),
373 fhSubJettiness2_FJ_OP_WTA_CA(0x0),
374 fhSubJettiness2_FJ_MIN(0x0),
375 fhSubJettiness2to1_FJ_AKT(0x0),
376 fhSubJettiness2to1_FJ_KT(0x0),
377 fhSubJettiness2to1_FJ_CA(0x0),
378 fhSubJettiness2to1_FJ_WTA_KT(0x0),
379 fhSubJettiness2to1_FJ_WTA_CA(0x0),
380 fhSubJettiness2to1_FJ_OP_AKT(0x0),
381 fhSubJettiness2to1_FJ_OP_KT(0x0),
382 fhSubJettiness2to1_FJ_OP_CA(0x0),
383 fhSubJettiness2to1_FJ_OP_WTA_KT(0x0),
384 fhSubJettiness2to1_FJ_OP_WTA_CA(0x0),
385 fhSubJettiness2to1_FJ_MIN(0x0),
386 fShapesVar_Tracks_Rec(0),
387 fShapesVar_Tracks_Truth(0),
388 fTreeResponseMatrixAxis(0),
396 DefineOutput(1, TList::Class());
397 DefineOutput(2, TTree::Class());
398 DefineOutput(3, TTree::Class());
414 Bool_t oldStatus = TH1::AddDirectoryStatus();
415 TH1::AddDirectory(kFALSE);
416 TH1::AddDirectory(oldStatus);
422 const char* nameoutput_1 = GetOutputSlot(3)->GetContainer()->GetName();
425 fShapesVarNames_Tracks[0] =
"Jet_Constituents_Det";
426 fShapesVarNames_Tracks[1] =
"Jet_Constituents_Truth";
434 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
439 fShapesVarNames[0] =
"Pt";
440 fShapesVarNames[1] =
"Pt_Truth";
441 fShapesVarNames[2] =
"Tau1";
442 fShapesVarNames[3] =
"Tau1_Truth";
443 fShapesVarNames[4] =
"Tau2";
444 fShapesVarNames[5] =
"Tau2_Truth";
445 fShapesVarNames[6] =
"Tau3";
446 fShapesVarNames[7] =
"Tau3_Truth";
447 fShapesVarNames[8] =
"OpeningAngle";
448 fShapesVarNames[9] =
"OpeningAngle_Truth";
449 fShapesVarNames[10] =
"JetMultiplicity";
450 fShapesVarNames[11] =
"JetMultiplicity_Truth";
451 fShapesVarNames[12] =
"OpeningAngleSD";
452 fShapesVarNames[13] =
"OpeningAngleSD_Truth";
453 fShapesVarNames[14] =
"Zg";
454 fShapesVarNames[15] =
"Zg_Truth";
455 fShapesVarNames[16] =
"LeadingTrackPt";
456 fShapesVarNames[17] =
"LeadingTrackPt_Truth";
457 fShapesVarNames[18] =
"EventPlaneTriggerHadron";
458 fShapesVarNames[19] =
"EventPlaneTriggerHadron_Truth";
459 fShapesVarNames[20] =
"EventPlaneTPCTriggerHadron";
460 fShapesVarNames[21] =
"EventPlaneTPCTriggerHadron_Truth";
461 fShapesVarNames[22] =
"DeltaR";
462 fShapesVarNames[23] =
"DeltaR_Truth";
463 fShapesVarNames[24] =
"Frac1";
464 fShapesVarNames[25] =
"Frac1_Truth";
465 fShapesVarNames[26] =
"Frac2";
466 fShapesVarNames[27] =
"Frac2_Truth";
469 fShapesVarNames[0] =
"Pt_Rec";
470 fShapesVarNames[1] =
"Pt_Truth";
471 fShapesVarNames[2] =
"Eta_Rec";
472 fShapesVarNames[3] =
"Eta_Truth";
473 fShapesVarNames[4] =
"Phi_Rec";
474 fShapesVarNames[5] =
"Phi_Truth";
475 fShapesVarNames[6] =
"Mass_Rec";
476 fShapesVarNames[7] =
"Mass_Truth";
477 fShapesVarNames[8] =
"JetMultiplicity_Rec";
478 fShapesVarNames[9] =
"JetMultiplicity_Truth";
479 fShapesVarNames[10] =
"Parton_1_Flag";
480 fShapesVarNames[11] =
"Blank_2";
481 fShapesVarNames[12] =
"Parton_1_Eta";
482 fShapesVarNames[13] =
"Blank_4";
483 fShapesVarNames[14] =
"Parton_1_Phi";
484 fShapesVarNames[15] =
"Blank_6";
485 fShapesVarNames[16] =
"Parton_2_Flag";
486 fShapesVarNames[17] =
"Blank_8";
487 fShapesVarNames[18] =
"Parton_2_Eta";
488 fShapesVarNames[19] =
"Blank_10";
489 fShapesVarNames[20] =
"Parton_2_Phi";
490 fShapesVarNames[21] =
"Blank_12";
491 fShapesVarNames[22] =
"Blank_13";
492 fShapesVarNames[23] =
"Blank_14";
493 fShapesVarNames[24] =
"Blank_15";
494 fShapesVarNames[25] =
"Blank_16";
495 fShapesVarNames[26] =
"Blank_17";
496 fShapesVarNames[27] =
"Blank_18";
499 cout<<
"looping over variables"<<endl;
505 const Int_t nVarMin = 22;
508 fShapesVarNames[0] =
"Pt";
509 fShapesVarNames[1] =
"Pt_Truth";
511 fShapesVarNames[2] =
"Tau1";
512 fShapesVarNames[3] =
"Tau1_Truth";
514 fShapesVarNames[4] =
"Tau2";
515 fShapesVarNames[5] =
"Tau2_Truth";
517 fShapesVarNames[6] =
"SubJet1LeadingTrackPt";
519 fShapesVarNames[7] =
"SubJet1LeadingTrackPt_Truth";
521 fShapesVarNames[8] =
"OpeningAngle";
522 fShapesVarNames[9] =
"OpeningAngle_Truth";
525 fShapesVarNames[10] =
"SubJet2LeadingTrackPt";
527 fShapesVarNames[11] =
"SubJet2LeadingTrackPt_Truth";
529 fShapesVarNames[12] =
"OpeningAngleSD";
531 fShapesVarNames[13] =
"OpeningAngleSD_Truth";
533 fShapesVarNames[14] =
"SubJet1Pt";
535 fShapesVarNames[15] =
"SubJet1Pt_Truth";
537 fShapesVarNames[16] =
"LeadingTrackPt";
539 fShapesVarNames[17] =
"LeadingTrackPt_Truth";
541 fShapesVarNames[18] =
"EventPlaneTriggerHadron";
544 fShapesVarNames[19] =
"EventPlaneTriggerHadron_Truth";
546 fShapesVarNames[20] =
"SubJet2Pt";
548 fShapesVarNames[21] =
"SubJet2Pt_Truth";
552 fShapesVarNames[0] =
"Pt_Rec";
553 fShapesVarNames[1] =
"Pt_Truth";
554 fShapesVarNames[2] =
"Eta_Rec";
555 fShapesVarNames[3] =
"Eta_Truth";
556 fShapesVarNames[4] =
"Phi_Rec";
557 fShapesVarNames[5] =
"Phi_Truth";
558 fShapesVarNames[6] =
"Mass_Rec";
559 fShapesVarNames[7] =
"Mass_Truth";
560 fShapesVarNames[8] =
"JetMultiplicity_Rec";
561 fShapesVarNames[9] =
"JetMultiplicity_Truth";
562 fShapesVarNames[10] =
"Blank_1";
563 fShapesVarNames[11] =
"Blank_2";
564 fShapesVarNames[12] =
"Blank_3";
565 fShapesVarNames[13] =
"Blank_4";
566 fShapesVarNames[14] =
"Blank_5";
567 fShapesVarNames[15] =
"Blank_6";
568 fShapesVarNames[16] =
"Blank_7";
569 fShapesVarNames[17] =
"Blank_8";
570 fShapesVarNames[18] =
"Blank_9";
571 fShapesVarNames[19] =
"Blank_10";
572 fShapesVarNames[20] =
"Blank_11";
573 fShapesVarNames[21] =
"Blank_12";
576 for(
Int_t ivar=0; ivar < nVarMin; ivar++){
577 cout<<
"looping over variables"<<endl;
583 fhPtTriggerHadron=
new TH1F(
"fhPtTriggerHadron",
"fhPtTriggerHadron",1500,-0.5,149.5);
587 fhPhiTriggerHadronJet=
new TH1F(
"fhPhiTriggerHadronJet",
"fhPhiTriggerHadronJet",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
589 fhPhiTriggerHadronEventPlane=
new TH1F(
"fhPhiTriggerHadronEventPlane",
"fhPhiTriggerHadronEventPlane",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
591 fhPhiTriggerHadronEventPlaneTPC=
new TH1F(
"fhPhiTriggerHadronEventPlaneTPC",
"fhPhiTriggerHadronEventPlaneTPC",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
597 fhJetPt=
new TH1F(
"fhJetPt",
"Jet Pt",1500,-0.5,149.5 );
601 fhJetPhi=
new TH1F(
"fhJetPhi",
"Jet Phi",780 , -7, 7);
605 fhJetMass=
new TH1F(
"fhJetMass",
"Jet Mass", 4000,-0.5, 39.5);
607 fhJetRadius=
new TH1F(
"fhJetRadius",
"Jet Radius", 100, -0.05,0.995);
609 fhNumberOfJetTracks=
new TH1F(
"fhNumberOfJetTracks",
"Number of Tracks within a Jet", 300, -0.5,299.5);
611 fhSubJetRadius=
new TH1F(
"fhSubJetRadius",
"SubJet Radius", 100, -0.05,0.995);
613 fhSubJetPt=
new TH1F(
"fhSubJetPt",
"SubJet Pt", 1500, -0.5,149.5);
615 fhSubJetMass=
new TH1F(
"fhSubJetMass",
"Sub Jet Mass", 4000,-0.5, 39.5);
617 fhNumberOfSubJetTracks=
new TH1F(
"fhNumberOfSubJetTracks",
"Number of Tracks within a Sub Jet", 300, -0.5,299.5);
619 fhJetCounter=
new TH1F(
"fhJetCounter",
"Jet Counter", 150, -0.5, 149.5);
621 fhSubJetCounter =
new TH1F(
"fhSubJetCounter",
"SubJet Counter",50, -0.5,49.5);
623 fhEventCounter=
new TH1F(
"fhEventCounter",
"Event Counter", 15,0.5,15.5);
625 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi",780 , -7, 7);
627 fhTrackPhi_Cut=
new TH1F(
"fhTrackPhi_Cut",
"fhTrackPhi_Cut",780 , -7, 7);
765 fhJetPt_1=
new TH1F(
"fhJetPt_1",
"Jet Pt Detector Level",1500,-0.5,149.5 );
767 fhJetPt_2=
new TH1F(
"fhJetPt_2",
"Jet Pt Particle Level",1500,-0.5,149.5 );
769 fhJetPhi_1=
new TH1F(
"fhJetPhi_1",
"Jet Phi Detector Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
771 fhJetPhi_2=
new TH1F(
"fhJetPhi_2",
"Jet Phi Particle Level",360 , -1.5*(TMath::Pi()), 1.5*(TMath::Pi()));
777 fhJetMass_1=
new TH1F(
"fhJetMass_1",
"Jet Mass Detector Level", 4000,-0.5, 39.5);
779 fhJetMass_2=
new TH1F(
"fhJetMass_2",
"Jet Mass Particle Level", 4000,-0.5, 39.5);
781 fhJetRadius_1=
new TH1F(
"fhJetRadius_1",
"Jet Radius Detector Level", 100, -0.05,0.995);
783 fhJetRadius_2=
new TH1F(
"fhJetRadius_2",
"Jet Radius Particle Level", 100, -0.05,0.995);
785 fhNumberOfJetTracks_1=
new TH1F(
"fhNumberOfJetTracks_1",
"Number of Tracks within a Jet Detector Level", 300, -0.5,299.5);
787 fhNumberOfJetTracks_2=
new TH1F(
"fhNumberOfJetTracks_2",
"Number of Tracks within a Jet Particle Level", 300, -0.5,299.5);
789 fhSubJetRadius_1=
new TH1F(
"fhSubJetRadius_1",
"SubJet Radius Detector Level", 100, -0.05,0.995);
791 fhSubJetRadius_2=
new TH1F(
"fhSubJetRadius_2",
"SubJet Radius Particle Level", 100, -0.05,0.995);
793 fhSubJetPt_1=
new TH1F(
"fhSubJetPt_1",
"SubJet Pt Detector Level", 1500, -0.5,149.5);
795 fhSubJetPt_2=
new TH1F(
"fhSubJetPt_2",
"SubJet Pt Particle Level", 1500, -0.5,149.5);
797 fhSubJetMass_1=
new TH1F(
"fhSubJetMass_1",
"Sub Jet Mass Detector Level", 4000,-0.5, 39.5);
799 fhSubJetMass_2=
new TH1F(
"fhSubJetMass_2",
"Sub Jet Mass Particle Level", 4000,-0.5, 39.5);
801 fhNumberOfSubJetTracks_1=
new TH1F(
"fhNumberOfSubJetTracks_1",
"Number of Tracks within a Sub Jet Detector Level", 300, -0.5,299.5);
803 fhNumberOfSubJetTracks_2=
new TH1F(
"fhNumberOfSubJetTracks_2",
"Number of Tracks within a Sub Jet Particle Level", 300, -0.5,299.5);
805 fhJetCounter_1=
new TH1F(
"fhJetCounter_1",
"Jet Counter Detector Level", 150, -0.5, 149.5);
807 fhJetCounter_2=
new TH1F(
"fhJetCounter_2",
"Jet Counter Particle Level", 150, -0.5, 149.5);
809 fhSubJetCounter_1 =
new TH1F(
"fhSubJetCounter_1",
"SubJet Counter Detector Level",50, -0.5,49.5);
811 fhSubJetCounter_2 =
new TH1F(
"fhSubJetCounter_2",
"SubJet Counter Particle Level",50, -0.5,49.5);
813 fh2PtRatio=
new TH2F(
"fhPtRatio",
"MC pt for detector level vs particle level jets",1500,-0.5,149.5,1500,-0.5,149.5);
815 fhEventCounter_1=
new TH1F(
"fhEventCounter_1",
"Event Counter Detector Level", 15,0.5,15.5);
817 fhEventCounter_2=
new TH1F(
"fhEventCounter_2",
"Event Counter Particle Level", 15,0.5,15.5);
819 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi",780 , -7, 7);
821 fhTrackPhi_Cut=
new TH1F(
"fhTrackPhi_Cut",
"fhTrackPhi_Cut",780 , -7, 7);
825 fhEventCounter=
new TH1F(
"fhEventCounter",
"Event Counter", 15,0.5,15.5);
884 TClonesArray *TracksArray_Particles = NULL;
885 TClonesArray *TracksArrayMC_Particles = NULL;
887 else if(PartCont_Particles) TracksArray_Particles = PartCont_Particles->GetArray();
889 AliAODTrack *Track_Particles = 0x0;
890 Int_t NTracks_Particles=0;
892 else if(TracksArray_Particles) NTracks_Particles = TracksArray_Particles->GetEntriesFast();
895 if (PartContMC_Particles && TracksArrayMC_Particles){
896 for(
Int_t i=0; i < NTracks_Particles; i++){
897 if((Track_Particles = static_cast<AliAODTrack*>(PartContMC_Particles->
GetAcceptParticle(i)))){
898 if (!Track_Particles)
continue;
899 if(TMath::Abs(Track_Particles->Eta())>0.9)
continue;
900 if (Track_Particles->Pt()<0.15)
continue;
902 if (Track_Particles->Pt()>=4.0)
fhTrackPhi_Cut->Fill(Track_Particles->Phi());
908 if (PartCont_Particles && TracksArray_Particles){
909 for(
Int_t i=0; i < NTracks_Particles; i++){
910 if((Track_Particles = static_cast<AliAODTrack*>(PartCont_Particles->
GetAcceptTrack(i)))){
911 if (!Track_Particles)
continue;
912 if(TMath::Abs(Track_Particles->Eta())>0.9)
continue;
913 if (Track_Particles->Pt()<0.15)
continue;
915 if (Track_Particles->Pt()>=4.0)
fhTrackPhi_Cut->Fill(Track_Particles->Phi());
922 AliAODTrack *TriggerHadron = 0x0;
926 if (TriggerHadronLabel==-99999)
return 0;
937 TClonesArray *TrackArray = NULL;
938 TClonesArray *TrackArrayMC = NULL;
940 else TrackArray = PartCont->GetArray();
942 else TriggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(TriggerHadronLabel));
943 if (!TriggerHadron)
return 0;
966 Bool_t JetsMatched=kFALSE;
967 Bool_t EventCounter=kFALSE;
973 JetCont1->ResetCurrentID();
977 if ( (!Jet1) || (JetPtThreshold<
fPtThreshold))
continue;
997 Jet2 = JetCont2->
GetJet(i);
1002 if(JetNumber==-1)
continue;
1003 Jet2=JetCont2->
GetJet(JetNumber);
1011 if (!Jet3)
continue;
1016 std::vector <Double_t> Jet_Constituents_Emb;
1017 std::vector <Double_t> Jet_Constituents_Truth;
1018 AliVParticle *JetConstituent_Emb=NULL;
1019 AliVParticle *JetConstituent_Truth=NULL;
1023 if(!JetConstituent_Emb)
continue;
1024 Jet_Constituents_Emb.push_back(JetConstituent_Emb->Px());
1025 Jet_Constituents_Emb.push_back(JetConstituent_Emb->Py());
1026 Jet_Constituents_Emb.push_back(JetConstituent_Emb->Pz());
1027 Jet_Constituents_Emb.push_back(JetConstituent_Emb->E());
1031 if(!JetConstituent_Truth)
continue;
1032 Jet_Constituents_Truth.push_back(JetConstituent_Truth->Px());
1033 Jet_Constituents_Truth.push_back(JetConstituent_Truth->Py());
1034 Jet_Constituents_Truth.push_back(JetConstituent_Truth->Pz());
1035 Jet_Constituents_Truth.push_back(JetConstituent_Truth->E());
1065 else fShapesVar[20]=0.0;
1068 else fShapesVar[22]=0.0;
1071 else fShapesVar[24]=0.0;
1073 else fShapesVar[26]=0.0;
1076 fShapesVar[1]=Jet4->
Pt();
1078 else fShapesVar[3]=Jet4->
Eta();
1080 else fShapesVar[5]=Jet4->
Phi();
1082 else fShapesVar[7]=Jet4->
M();
1086 else fShapesVar[11]=0.0;
1088 else fShapesVar[13]=0.0;
1090 else fShapesVar[15]=0.0;
1092 else fShapesVar[17]=0.0;
1094 else fShapesVar[19]=0.0;
1097 else fShapesVar[21]=0.0;
1100 else fShapesVar[23]=0.0;
1103 else fShapesVar[25]=0.0;
1105 else fShapesVar[27]=0.0;
1142 Int_t JetCounter1=0;
1143 Int_t JetCounter2=0;
1146 Bool_t JetsMatched=kFALSE;
1148 Bool_t EventCounter=kFALSE;
1152 JetCont1->ResetCurrentID();
1154 std::vector <Double_t> Jet_Constituents_Det;
1155 std::vector <Double_t> Jet_Constituents_Truth;
1185 JetPhi1=Jet1->
Phi();
1186 if(JetPhi1 < -1*TMath::Pi()) JetPhi1 += (2*TMath::Pi());
1187 else if (JetPhi1 > TMath::Pi()) JetPhi1 -= (2*TMath::Pi());
1204 JetPhi2=Jet2->
Phi();
1205 if(JetPhi2 < -1*TMath::Pi()) JetPhi2 += (2*TMath::Pi());
1206 else if (JetPhi2 > TMath::Pi()) JetPhi2 -= (2*TMath::Pi());
1215 AliVParticle *JetConstituent_Det=NULL;
1216 AliVParticle *JetConstituent_Truth=NULL;
1220 if(!JetConstituent_Det)
continue;
1221 Jet_Constituents_Det.push_back(JetConstituent_Det->Px());
1222 Jet_Constituents_Det.push_back(JetConstituent_Det->Py());
1223 Jet_Constituents_Det.push_back(JetConstituent_Det->Pz());
1224 Jet_Constituents_Det.push_back(JetConstituent_Det->E());
1228 if(!JetConstituent_Truth)
continue;
1229 Jet_Constituents_Truth.push_back(JetConstituent_Truth->Px());
1230 Jet_Constituents_Truth.push_back(JetConstituent_Truth->Py());
1231 Jet_Constituents_Truth.push_back(JetConstituent_Truth->Pz());
1232 Jet_Constituents_Truth.push_back(JetConstituent_Truth->E());
1363 Bool_t EventCounter=kFALSE;
1368 JetCont->ResetCurrentID();
1372 else JetPt_ForThreshold = Jet1->
Pt();
1410 std::vector <Double_t> Jet_Constituents_Data;
1411 AliVParticle *JetConstituent_Data=NULL;
1412 AliVParticle *JetConstituent_Truth=NULL;
1416 if(!JetConstituent_Data)
continue;
1417 Jet_Constituents_Data.push_back(JetConstituent_Data->Px());
1418 Jet_Constituents_Data.push_back(JetConstituent_Data->Py());
1419 Jet_Constituents_Data.push_back(JetConstituent_Data->Pz());
1420 Jet_Constituents_Data.push_back(JetConstituent_Data->E());
1496 Bool_t EventCounter=kFALSE;
1503 JetCont->ResetCurrentID();
1508 else JetPt_ForThreshold = Jet1->
Pt();
1539 if(JetPhi < -1*TMath::Pi()) JetPhi += (2*TMath::Pi());
1540 else if (JetPhi > TMath::Pi()) JetPhi -= (2*TMath::Pi());
1546 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> Randomised_Jet=
ModifyJet(Jet1,0,
"Randomise");
1547 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_15=
ModifyJet(Jet1,0,
"AddExtraProng_02_15");
1548 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_30=
ModifyJet(Jet1,0,
"AddExtraProng_02_30");
1549 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_45=
ModifyJet(Jet1,0,
"AddExtraProng_02_45");
1550 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_02_60=
ModifyJet(Jet1,0,
"AddExtraProng_02_60");
1551 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_10=
ModifyJet(Jet1,0,
"AddExtraProng_01_10");
1552 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_15=
ModifyJet(Jet1,0,
"AddExtraProng_01_15");
1553 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_20=
ModifyJet(Jet1,0,
"AddExtraProng_01_20");
1554 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_25=
ModifyJet(Jet1,0,
"AddExtraProng_01_25");
1555 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_30=
ModifyJet(Jet1,0,
"AddExtraProng_01_30");
1556 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_01_45=
ModifyJet(Jet1,0,
"AddExtraProng_01_45");
1557 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_10=
ModifyJet(Jet1,0,
"AddExtraProng_03_10");
1558 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_15=
ModifyJet(Jet1,0,
"AddExtraProng_03_15");
1559 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_20=
ModifyJet(Jet1,0,
"AddExtraProng_03_20");
1560 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_30=
ModifyJet(Jet1,0,
"AddExtraProng_03_30");
1561 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> ExtraProng_Jet_03_45=
ModifyJet(Jet1,0,
"AddExtraProng_03_45");
1564 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> kTTrack_1_2_1=
ModifyJet(Jet1,0,
"AddkTTrack_1_2_1");
1566 std::vector <Double_t> Jet_Constituents_Data;
1567 AliVParticle *JetConstituent_Data=NULL;
1568 AliVParticle *JetConstituent_Truth=NULL;
1572 if(!JetConstituent_Data)
continue;
1573 Jet_Constituents_Data.push_back(JetConstituent_Data->Px());
1574 Jet_Constituents_Data.push_back(JetConstituent_Data->Py());
1575 Jet_Constituents_Data.push_back(JetConstituent_Data->Pz());
1576 Jet_Constituents_Data.push_back(JetConstituent_Data->E());
1659 delete Randomised_Jet.second;
1660 delete ExtraProng_Jet_02_15.second;
1661 delete ExtraProng_Jet_02_30.second;
1662 delete ExtraProng_Jet_02_45.second;
1663 delete ExtraProng_Jet_02_60.second;
1664 delete ExtraProng_Jet_01_30.second;
1665 delete ExtraProng_Jet_01_45.second;
1666 delete ExtraProng_Jet_03_30.second;
1667 delete ExtraProng_Jet_03_45.second;
1679 if(Phi < -1*TMath::Pi()) Phi += (2*TMath::Pi());
1680 else if (Phi > TMath::Pi()) Phi -= (2*TMath::Pi());
1682 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1683 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1689 if(Phi1 < -1*TMath::Pi()) Phi1 += (2*TMath::Pi());
1690 else if (Phi1 > TMath::Pi()) Phi1 -= (2*TMath::Pi());
1691 if(Phi2 < -1*TMath::Pi()) Phi2 += (2*TMath::Pi());
1692 else if (Phi2 > TMath::Pi()) Phi2 -= (2*TMath::Pi());
1694 if(DeltaPhi < -1*TMath::Pi()) DeltaPhi += (2*TMath::Pi());
1695 else if (DeltaPhi > TMath::Pi()) DeltaPhi -= (2*TMath::Pi());
1716 TClonesArray *TracksArray = NULL;
1717 TClonesArray *TracksArrayMC = NULL;
1719 else TracksArray = PartCont->GetArray();
1722 if(!PartContMC || !TracksArrayMC)
return -99999;
1725 if(!PartCont || !TracksArray)
return -99999;
1728 AliAODTrack *
Track = 0x0;
1729 Int_t Trigger_Index[100];
1730 for (
Int_t i=0; i<100; i++) Trigger_Index[i] = 0;
1731 Int_t Trigger_Counter = 0;
1734 else NTracks = TracksArray->GetEntriesFast();
1735 for(
Int_t i=0; i < NTracks; i++){
1738 if (!Track)
continue;
1739 if(TMath::Abs(Track->Eta())>0.9)
continue;
1740 if (Track->Pt()<0.15)
continue;
1741 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1742 Trigger_Index[Trigger_Counter] = i;
1748 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1749 if (!Track)
continue;
1750 if(TMath::Abs(Track->Eta())>0.9)
continue;
1751 if (Track->Pt()<0.15)
continue;
1752 if ((Track->Pt() >= PtMin) && (Track->Pt()< PtMax)) {
1753 Trigger_Index[Trigger_Counter] = i;
1759 if (Trigger_Counter == 0)
return -99999;
1760 Int_t RandomNumber = 0, Index = 0 ;
1761 TRandom3* Random =
new TRandom3(0);
1762 RandomNumber = Random->Integer(Trigger_Counter);
1763 Index = Trigger_Index[RandomNumber];
1774 AliVParticle *Particle=0x0;
1780 if(!Particle)
continue;
1782 Angularity_Numerator=Angularity_Numerator+(Particle->Pt()*TMath::Sqrt(((Particle->Eta()-Jet->
Eta())*(Particle->Eta()-Jet->
Eta()))+(DeltaPhi*
DeltaPhi)));
1783 Angularity_Denominator= Angularity_Denominator+Particle->Pt();
1785 if(Angularity_Denominator!=0)
return Angularity_Numerator/Angularity_Denominator;
1798 AliVParticle *Particle=0x0;
1802 if(!Particle)
continue;
1803 PTD_Numerator=PTD_Numerator+(Particle->Pt()*Particle->Pt());
1804 PTD_Denominator=PTD_Denominator+Particle->Pt();
1806 if(PTD_Denominator!=0)
return TMath::Sqrt(PTD_Numerator)/PTD_Denominator;
1824 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1825 Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
1826 if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;}
1830 if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;}
1842 Int_t ArraySize =N+1;
1844 TArrayD JetIndexSorter(ArraySize);
1845 for (
Int_t i=0; i<ArraySize; i++){
1848 for (
Int_t i=0; i<ArraySize; i++){
1849 JetIndexSorter[i]=0;
1853 SubJet=Reclusterer->
GetJet(i);
1854 if (Type==0) SortingVariable=SubJet->
Pt();
1855 else if (Type==1) SortingVariable=SubJet->
E();
1856 else if (Type==2) SortingVariable=SubJet->
M();
1857 for (
Int_t j=0; j<N; j++){
1858 if (SortingVariable>JetSorter[j]){
1859 for (
Int_t k=N-1; k>=j; k--){
1860 JetSorter[k+1]=JetSorter[k];
1861 JetIndexSorter[k+1]=JetIndexSorter[k];
1863 JetSorter[j]=SortingVariable;
1864 JetIndexSorter[j]=i;
1869 if (!Index)
return JetSorter[N-1];
1870 else return JetIndexSorter[N-1];
1893 for (
Int_t i=1; i<=N; i++){
1895 if(Observable==-999){
1899 Fraction_Numerator=Fraction_Numerator+Observable;
1903 Fraction_Numerator=
SubJetOrdering(Jet,Reclusterer,N,Type,kFALSE);
1904 if (Fraction_Numerator==-999)
return -2;
1907 if(Loss)
return (Jet->
Pt()-Fraction_Numerator)/Jet->
Pt();
1908 else return Fraction_Numerator/Jet->
Pt();
1911 if(Loss)
return (Jet->
E()-Fraction_Numerator)/Jet->
E();
1912 else return Fraction_Numerator/Jet->
E();
1915 if(Loss)
return (Jet->
M()-Fraction_Numerator)/Jet->
M();
1916 else return Fraction_Numerator/Jet->
M();
1931 AliVParticle *JetParticle=0x0;
1932 Double_t SubJetiness_Numerator = 0;
1933 Double_t SubJetiness_Denominator = 0;
1941 for (
Int_t j=1; j<=N; j++){
1949 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);
1952 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);
1953 if (DeltaR2<DeltaR1) DeltaR1=DeltaR2;
1956 SubJetiness_Numerator=SubJetiness_Numerator+(JetParticle->Pt()*DeltaR1);
1957 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));
1958 else SubJetiness_Denominator=SubJetiness_Denominator+(TMath::Power((Reclusterer->
GetJet(
SubJetOrdering(Jet,Reclusterer,N,0,kTRUE))->
Pt()),A)*JetParticle->Pt()*TMath::Power(JetRadius,B));
1960 if (SubJetiness_Denominator!=0 && !Error){
1962 return SubJetiness_Numerator/SubJetiness_Denominator; }
2002 if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
2006 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
2010 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==3) && (Algorithm==0) && (Beta==1.0) && (Option==0)){
2014 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==0) && (Beta==1.0) && (Option==1)){
2018 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==1) && (Beta==1.0) && (Option==0)){
2022 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==1) && (Beta==1.0) && (Option==0)){
2026 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==1) && (Beta==1.0) && (Option==1)){
2030 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==2) && (Beta==1.0) && (Option==0)){
2034 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==2) && (Beta==1.0) && (Option==0)){
2038 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==2) && (Beta==1.0) && (Option==1)){
2042 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==1) && (Algorithm==6) && (Beta==1.0) && (Option==0)){
2046 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==6) && (Beta==1.0) && (Option==0)){
2050 else if((
fJetShapeSub==
kDerivSub) && (JetContNb==0) && (N==2) && (Algorithm==6) && (Beta==1.0) && (Option==1)){
2064 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
2065 Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->GetZ()};
2066 return JetFinder.
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,
fSubJetRadius,Beta,Option,0,Beta_SD,ZCut,
fSoftDropOn);
2071 return JetFinder.
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,
fSubJetRadius,Beta,Option,0,Beta_SD,ZCut,
fSoftDropOn);
2074 if (Option==3)
return JetFinder.
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,
fSubJetRadius,Beta,Option,0,Beta_SD,ZCut,
fSoftDropOn);
2139 std::pair<fastjet::PseudoJet,fastjet::ClusterSequence *> Jet_ClusterSequence;
2140 std::vector<fastjet::PseudoJet> fInputVectors;
2143 std::vector<fastjet::PseudoJet> Modified_Jet;
2144 fastjet::ClusterSequence *fClustSeqSA;
2147 AliVParticle *fTrk = Jet->
TrackAt(i, fTrackCont->GetArray());
2148 if (!fTrk)
continue;
2149 fastjet::PseudoJet PseudoTracks(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
2150 PseudoTracks.set_user_index(Jet->
TrackAt(i)+100);
2151 fInputVectors.push_back(PseudoTracks);
2153 if (Modification==
"Randomise") fInputVectors=
RandomiseTracks(Jet,fInputVectors);
2154 if (Modification==
"AddExtraProng_02_15") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.15);
2155 if (Modification==
"AddExtraProng_02_30") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.30);
2156 if (Modification==
"AddExtraProng_02_45") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.45);
2157 if (Modification==
"AddExtraProng_02_60") fInputVectors=
AddExtraProng(fInputVectors,0.2,0.60);
2158 if (Modification==
"AddExtraProng_01_10") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.10);
2159 if (Modification==
"AddExtraProng_01_15") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.15);
2160 if (Modification==
"AddExtraProng_01_20") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.20);
2161 if (Modification==
"AddExtraProng_01_25") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.25);
2162 if (Modification==
"AddExtraProng_01_30") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.30);
2163 if (Modification==
"AddExtraProng_01_45") fInputVectors=
AddExtraProng(fInputVectors,0.1,0.45);
2164 if (Modification==
"AddExtraProng_03_10") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.10);
2165 if (Modification==
"AddExtraProng_03_15") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.15);
2166 if (Modification==
"AddExtraProng_03_20") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.20);
2167 if (Modification==
"AddExtraProng_03_30") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.30);
2168 if (Modification==
"AddExtraProng_03_45") fInputVectors=
AddExtraProng(fInputVectors,0.3,0.45);
2169 if (Modification==
"AddkTTrack_1_2_1") fInputVectors=
AddkTTracks(Jet,fInputVectors,1.0,2.0,1);
2172 fastjet::JetDefinition fJetDef(fastjet::antikt_algorithm,
fJetRadius, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
2173 fClustSeqSA=
new fastjet::ClusterSequence(fInputVectors, fJetDef);
2174 Modified_Jet=fClustSeqSA->inclusive_jets(0);
2175 Jet_ClusterSequence.second=fClustSeqSA;
2176 }
catch (fastjet::Error) {
2177 AliError(
" [w] FJ Exception caught.");
2181 Jet_ClusterSequence.first=Modified_Jet[0];
2182 return Jet_ClusterSequence;
2188 fRandom1.SetSeed(0);
2194 std::vector<fastjet::PseudoJet> Random_Track_Vector;
2195 Random_Track_Vector.clear();
2196 for (
Int_t i=0; i< fInputVectors.size(); i++){
2207 else Track_Pt=fInputVectors[i].perp();
2208 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))));
2209 Random_Track.set_user_index(i);
2210 Random_Track_Vector.push_back(Random_Track);
2212 fInputVectors.clear();
2213 return Random_Track_Vector;
2218 fRandom1.SetSeed(0);
2219 std::vector<fastjet::PseudoJet> Jet;
2222 fastjet::JetDefinition fJetDef(fastjet::antikt_algorithm,
fJetRadius*2, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
2223 fastjet::ClusterSequence fClustSeqSA_Prong(fInputVectors, fJetDef);
2224 Jet= fClustSeqSA_Prong.inclusive_jets(0);
2225 }
catch (fastjet::Error) {
2226 AliError(
" [w] FJ Exception caught.");
2228 Double_t Extra_Track_Phi_Change=fRandom1.Uniform(-1*Distance,Distance);
2229 Double_t Extra_Track_Phi=Jet[0].phi()+Extra_Track_Phi_Change;
2230 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)));
2231 Double_t Extra_Track_Eta=Jet[0].pseudorapidity()+Extra_Track_Eta_Change;
2232 Double_t Extra_Track_Pt=Jet[0].perp()*PtFrac;
2233 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))));
2234 ExtraTrack.set_user_index(150);
2235 fInputVectors.push_back(ExtraTrack);
2236 return fInputVectors;
2242 fastjet::PseudoJet Lab_Jet;
2243 Lab_Jet.reset(Jet->
Px(),Jet->
Py(),Jet->
Pz(),Jet->
E());
2246 Double_t xQs=TMath::Sqrt(QHat*XLength);
2249 for(
Int_t i=0;i<NAdditionalTracks;i++){
2251 Double_t kT_Scale,Limit_Min,Limit_Max;
2254 TF1 *kT_Func=
new TF1(
"kT_Func",
"1/(x*x*x*x)",xQs*xQs,10000);
2255 kT_Scale=kT_Func->GetRandom();
2261 Limit_Max=kT_Scale/TMath::Sin(0.01);
2262 TF1 *Omega_Func=
new TF1(
"Omega_Func",
"1/x",Limit_Min,Limit_Max);
2263 Double_t Omega=Omega_Func->GetRandom();
2265 Double_t Theta=TMath::ASin(kT_Scale/Omega);
2269 fastjet::PseudoJet ExtraTrack(kT_Scale/TMath::Sqrt(2),kT_Scale/TMath::Sqrt(2),Omega*TMath::Cos(Theta),Omega);
2271 fastjet::PseudoJet ExtraTrack_LabFrame=ExtraTrack.boost(Lab_Jet);
2273 fInputVectors.push_back(ExtraTrack_LabFrame);
2277 return fInputVectors;
2318 fastjet::PseudoJet Jet=Jet_ClusterSequence.first;
2323 FJWrapper.
SetRecombScheme(static_cast<fastjet::RecombinationScheme>(0));
2324 if (Jet.constituents().size()>=N){
2327 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
Float_t GetPartonEta6() 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
Float_t GetPartonEta7() const
std::vector< std::vector< Double_t > > fShapesVar_Tracks_Truth
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
Float_t GetPartonPhi7() 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
Int_t GetPartonFlag7() const
Container for particles within the EMCAL framework.
Double_t XBinsJetMass[28]
Float_t GetPartonPhi6() const
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.
Int_t GetPartonFlag6() const
AliParticleContainer * GetParticleContainer() const
void SetRecombSheme(Int_t val)
Double_t GetSecondOrderSubtracted1subjettiness_onepassca() const
void SetJetAlgorithm(Int_t val)
std::vector< std::vector< Double_t > > fShapesVar_Tracks_Rec
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
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
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.
const AliEmcalPythiaInfo * GetPythiaInfo() const
Double_t GetFirstOrderSubtracted1subjettiness_kt() const
Declaration of class AliEmcalPythiaInfo.
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