30 #include <TClonesArray.h>
35 #include <THnSparse.h>
40 #include <AliVCluster.h>
41 #include <AliVParticle.h>
44 #include "AliAnalysisManager.h"
45 #include <AliVEventHandler.h>
52 #include "AliEMCALGeometry.h"
53 #include "AliOADBContainer.h"
55 #include "AliEMCALTriggerPatchInfo.h"
57 #include "AliMCEvent.h"
70 fPlotJetHistograms(kFALSE),
71 fPlotClusterHistograms(kFALSE),
72 fPlotParticleCompositionHistograms(kFALSE),
73 fComputeBackground(kFALSE),
74 fDoTriggerSimulation(kFALSE),
75 fPlotMatchedJetHistograms(kFALSE),
76 fComputeMBDownscaling(kFALSE),
88 fTrackMatchingDeltaEtaMax(0.015),
89 fTrackMatchingDeltaPhiMax(0.030),
95 fUseAliEventCuts(kTRUE),
98 fUseManualEventCuts(kFALSE),
112 fPlotJetHistograms(kFALSE),
113 fPlotClusterHistograms(kFALSE),
114 fPlotParticleCompositionHistograms(kFALSE),
115 fComputeBackground(kFALSE),
116 fDoTriggerSimulation(kFALSE),
117 fPlotMatchedJetHistograms(kFALSE),
118 fComputeMBDownscaling(kFALSE),
130 fTrackMatchingDeltaEtaMax(0.015),
131 fTrackMatchingDeltaPhiMax(0.030),
132 fMBUpscaleFactor(1.),
137 fUseAliEventCuts(kTRUE),
140 fUseManualEventCuts(kFALSE),
242 if (embeddingHelper) {
251 while ((obj = next())) {
271 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
274 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
275 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
281 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
282 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
291 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
292 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
293 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
295 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
296 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
297 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
301 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->GetArrayName().Data());
302 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});type";
303 fHistManager.
CreateTH3(histname.Data(), title.Data(), 20, 0, 100,
nPtBins, 0,
fMaxPt, 2, -0.5, 1.5,
"s");
307 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
308 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
312 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
313 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}";
317 nbinsx = 20; minx = 0; maxx = 100;
319 nbinsz = 50; minz = 0; maxz = 1.;
321 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
322 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
323 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
325 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
326 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
327 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
330 nbinsx = 20; minx = 0; maxx = 100;
332 nbinsz = 50; minz = 0; maxz = 1.;
334 histname = TString::Format(
"%s/JetHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
335 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
336 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
338 histname = TString::Format(
"%s/JetHistograms/hZVsPtDCal", jets->GetArrayName().Data());
339 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
340 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
343 nbinsx = 20; minx = 0; maxx = 100;
345 nbinsz = 50; minz = 0; maxz =
fMaxPt;
347 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
348 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
349 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
351 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
352 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
353 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
356 nbinsx = 20; minx = 0; maxx = 100;
360 histname = TString::Format(
"%s/JetHistograms/hDeltaEHadCorr", jets->GetArrayName().Data());
361 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#sum#it{E}_{nonlincorr} - #it{E}_{hadcorr}";
362 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
366 histname = TString::Format(
"%s/JetHistograms/hMedPatchJet", jets->GetArrayName().Data());
367 title = histname +
";#it{E}_{patch,med};type;#it{p}_{T}^{corr} (GeV/#it{c});Centrality (%)";
378 histname =
"Trigger/hMBDownscaleFactor";
379 title = histname +
";Downscale factor;counts";
393 const Int_t nRcorrBins = 50;
395 const Int_t nCellBins = 30;
397 const Int_t nMatchedTrackBins = 5;
399 const Int_t nDeltaEtaBins = 60;
406 histname =
"ClusterHistograms/hM02";
407 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
411 histname =
"ClusterHistograms/hNcellsM02G04";
412 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); Ncells";
415 histname =
"ClusterHistograms/hNcellsM02L04";
416 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); Ncells";
423 histname =
"ClusterHistograms/hMatchedTrackPt";
424 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
427 histname =
"ClusterHistograms/hMatchedTrackPtM02G04";
428 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
431 histname =
"ClusterHistograms/hMatchedTrackPtM02L04";
432 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
436 histname =
"ClusterHistograms/hMatchedTrackN";
437 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
440 histname =
"ClusterHistograms/hMatchedTrackNM02G04";
441 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
444 histname =
"ClusterHistograms/hMatchedTrackNM02L04";
445 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
449 histname =
"ClusterHistograms/hM02Matched";
450 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
454 histname =
"ClusterHistograms/hM02Unmatched";
455 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
459 histname =
"ClusterHistograms/hDeltaEtaCentral";
460 htitle = histname +
";#eta_{track} - #eta_{clus};#it{E}_{clus} (GeV); M02";
463 histname =
"ClusterHistograms/hDeltaEtaPeripheral";
464 htitle = histname +
";#eta_{track} - #eta_{clus};#it{E}_{clus} (GeV); M02";
471 histname =
"ClusterHistograms/hEoverPM02Central";
472 htitle = histname +
";#it{E}_{clus} (GeV); #it{E}_{clus} / #Sigma#it{p}_{track} (GeV); M02";
475 histname =
"ClusterHistograms/hEoverPM02Peripheral";
476 htitle = histname +
";#it{E}_{clus} (GeV); #it{E}_{clus} / #Sigma#it{p}_{track} (GeV); M02";
483 histname =
"ClusterHistograms/hRcorrVsCent";
484 htitle = histname +
";Centrality (%);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
488 histname =
"ClusterHistograms/hRcorr0-10";
489 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
493 histname =
"ClusterHistograms/hRcorr50-90";
494 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
498 histname =
"ClusterHistograms/hRcorrClusVsCent";
499 htitle = histname +
";Centrality (%);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
503 histname =
"ClusterHistograms/hRcorrClus0-10";
504 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
508 histname =
"ClusterHistograms/hRcorrClus50-90";
509 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
513 histname =
"ClusterHistograms/hTrackMultiplicity";
514 htitle = histname +
";N_{tracks};Centrality (%)";
527 const Int_t nRejBins = 32;
530 const Int_t nContributorTypes = 11;
532 const Int_t nParticleTypes = 17;
535 AliEmcalContainer* cont = 0;
537 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) {
539 histname =
"ClusterHistogramsMC/hClusterRejectionReasonMC";
540 htitle = histname +
";Rejection reason;#it{E}_{clus} (GeV/)";
546 histname =
"ClusterHistogramsMC/hM02VsParticleTypeCentral";
547 htitle = histname +
";M02;#it{E}_{clus} (GeV); Particle type";
551 histname =
"ClusterHistogramsMC/hM02VsParticleTypePeripheral";
552 htitle = histname +
";M02;#it{E}_{clus} (GeV); Particle type";
557 histname =
"ClusterHistogramsMC/hPhotonHadronPhotonEnergy";
558 htitle = histname +
";Centrality (%);M02;#it{E}_{photon} (GeV)";
562 histname =
"ClusterHistogramsMC/hHadronPhotonHadronEnergy";
563 htitle = histname +
";Centrality (%);M02;#it{E}_{hadron} (GeV)";
579 min[dim] = fM02HistBins[0];
583 title[dim] =
"#it{E}_{clus} (GeV)";
586 min[dim] = fPtHistBins[0];
590 title[dim] =
"Contributor type";
591 nbins[dim] = nContributorTypes;
594 binEdges[dim] = contributorTypeBins;
597 title[dim] =
"#it{p}_{T,jet}^{corr}";
604 TString thnname =
"JetPerformanceMC/hM02VsContributorTypeJets";
606 for (
Int_t i = 0; i < dim; i++) {
607 hn->GetAxis(i)->SetTitle(title[i]);
608 hn->SetBinEdges(i, binEdges[i]);
615 title[dim] =
"#it{p}_{T,jet}^{corr}";
622 title[dim] =
"Contributor type";
623 nbins[dim] = nContributorTypes;
626 binEdges[dim] = contributorTypeBins;
636 title[dim] =
"#it{p}_{T,sum} (GeV)";
639 min[dim] = fPtHistBins[0];
643 thnname =
"JetPerformanceMC/hJetComposition";
645 for (
Int_t i = 0; i < dim; i++) {
646 thn->GetAxis(i)->SetTitle(title[i]);
647 thn->SetBinEdges(i, binEdges[i]);
653 histname =
"JetPerformance/hHadCaloEnergyUnmatched";
654 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
658 histname =
"JetPerformance/hHadCaloEnergyMatchedNonlincorr";
659 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
663 histname =
"JetPerformance/hHadCaloEnergyMatchedHadCorr";
664 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
676 axis->SetBinLabel(1,
"SinglePhoton");
677 axis->SetBinLabel(2,
"SingleElectron");
678 axis->SetBinLabel(3,
"SingleChargedPion");
679 axis->SetBinLabel(4,
"SingleProton");
680 axis->SetBinLabel(5,
"SingleAntiProton");
681 axis->SetBinLabel(6,
"SingleChargedKaon");
682 axis->SetBinLabel(7,
"SingleK0L");
683 axis->SetBinLabel(8,
"SingleNeutron");
684 axis->SetBinLabel(9,
"SingleAntiNeutron");
685 axis->SetBinLabel(10,
"SingleOther");
686 axis->SetBinLabel(11,
"PhotonHadron");
687 axis->SetBinLabel(12,
"HadronPhoton");
688 axis->SetBinLabel(13,
"MergedPi0");
689 axis->SetBinLabel(14,
"PhotonPhotonOther");
690 axis->SetBinLabel(15,
"HadronHadron");
691 axis->SetBinLabel(16,
"TwoContributorsOther");
692 axis->SetBinLabel(17,
"MoreThanTwoContributors");
706 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
708 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jets->GetArrayName().Data());
709 title = histname +
";Centrality;Scale factor;counts";
712 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jets->GetArrayName().Data());
713 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
733 histname =
"TriggerSimHistograms/hEtaVsPhi";
734 title = histname +
";#eta_{patch} (rad);#phi_{patch} (rad)";
738 histname =
"TriggerSimHistograms/hNPatches";
739 title = histname +
";#it{N}_{patches};type";
743 histname =
"TriggerSimHistograms/hPatchE";
744 title = histname +
";Centrality (%);#it{E}_{patch} (GeV)";
748 histname =
"TriggerSimHistograms/hPatchMedianE";
749 title = histname +
";Centrality (%);#it{E}_{patch,med} (GeV);type";
750 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, 0, 100, 100, 0, 50, 2, -0.5, 1.5);
756 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
759 histname = TString::Format(
"%s/TriggerSimHistograms/hJetRejectionReason", jets->GetArrayName().Data());
760 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
766 histname = TString::Format(
"%s/TriggerSimHistograms/hRhoVsCent", jets->GetArrayName().Data());
767 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
776 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
777 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
778 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
780 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
781 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
782 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
785 histname = TString::Format(
"%s/TriggerSimHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
786 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
790 histname = TString::Format(
"%s/TriggerSimHistograms/hAreaVsPt", jets->GetArrayName().Data());
791 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}";
795 nbinsx = 20; minx = 0; maxx = 100;
797 nbinsz = 50; minz = 0; maxz = 1.;
799 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
800 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
801 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
803 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
804 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
805 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
808 nbinsx = 20; minx = 0; maxx = 100;
810 nbinsz = 50; minz = 0; maxz = 1.;
812 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
813 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
814 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
816 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtDCal", jets->GetArrayName().Data());
817 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
818 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
821 nbinsx = 20; minx = 0; maxx = 100;
823 nbinsz = 50; minz = 0; maxz =
fMaxPt;
825 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
826 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
827 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
829 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
830 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
831 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
851 histname =
"MatchedJetHistograms/hResponseMatrixEMCal";
852 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
853 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
855 histname =
"MatchedJetHistograms/hResponseMatrixDCal";
856 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
857 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
860 nbinsx = 20; minx = 0; maxx = 100;
862 nbinsz = 250; minz = -5.; maxz = 5.;
864 histname =
"MatchedJetHistograms/hJESshiftEMCal";
865 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
866 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
868 histname =
"MatchedJetHistograms/hJESshiftDCal";
869 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
870 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
873 nbinsx = 20; minx = 0; maxx = 100;
875 nbinsz = 50; minz = 0; maxz = 1.;
877 histname =
"MatchedJetHistograms/hNEFVsPt";
878 title = histname +
";Centrality (%);#it{p}_{T,corr}^{det} (GeV/#it{c});Calo energy fraction";
879 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
882 nbinsx = 20; minx = 0; maxx = 100;
884 nbinsz = 50; minz = 0; maxz = 1.;
886 histname =
"MatchedJetHistograms/hZLeadingVsPt";
887 title = histname +
";Centrality (%);#it{p}_{T,corr}^{det} (GeV/#it{c});#it{z}_{leading}";
888 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
891 nbinsx = 20; minx = 0; maxx = 100;
893 nbinsz = 50; minz = 0; maxz = 1.;
895 histname =
"MatchedJetHistograms/hMatchingDistance";
896 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});R";
897 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
922 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
923 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",
924 GetName(), cls.GetName(),
"EmcalTriggers"));
929 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
949 TString triggerNameMB1 =
"CINT7-B-NOPF-CENT";
950 TString triggerNameMB2 =
"CV0L7-B-NOPF-CENT";
951 TString triggerNameJE =
"CINT7EJ1-B-NOPF-CENTNOPMD";
956 for (
auto i : runtriggers) {
957 if (i.EqualTo(triggerNameMB1) || i.EqualTo(triggerNameMB2)) {
966 TString histname =
"Trigger/hMBDownscaleFactor";
1003 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
1004 TString jetContName = jetCont->GetName();
1039 TClass cls(objname);
1040 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
1041 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",
1042 GetName(), cls.GetName(),
"EmcalTriggers"));
1047 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
1052 std::vector<Double_t> vecEMCal;
1053 std::vector<Double_t> vecDCal;
1055 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
1058 if(!recpatch->IsJetHighSimple())
continue;
1060 histname =
"TriggerSimHistograms/hEtaVsPhi";
1063 histname =
"TriggerSimHistograms/hPatchE";
1066 if (recpatch->IsEMCal()) {
1067 vecEMCal.push_back(recpatch->GetPatchE());
1069 vecDCal.push_back(recpatch->GetPatchE());
1076 const Int_t nBkgPatchesEMCal = vecEMCal.size();
1077 const Int_t nBkgPatchesDCal = vecDCal.size();
1078 fMedianEMCal = TMath::Median(nBkgPatchesEMCal, &vecEMCal[0]);
1079 fMedianDCal = TMath::Median(nBkgPatchesDCal, &vecDCal[0]);
1081 histname =
"TriggerSimHistograms/hPatchMedianE";
1085 histname =
"TriggerSimHistograms/hNPatches";
1093 for(
auto p : *fTriggerPatchInfo){
1094 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
1097 if(!recpatch->IsJetHighSimple())
continue;
1099 if (recpatch->IsEMCal()) {
1100 if ((recpatch->GetPatchE() -
fMedianDCal) > threshold) {
1105 if ((recpatch->GetPatchE() -
fMedianEMCal) > threshold) {
1153 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1154 TString jetContName = jets->GetName();
1159 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
1163 for (
auto jet : jets->
all()) {
1169 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
1174 UInt_t rejectionReason = 0;
1175 if (!jets->
AcceptJet(jet, rejectionReason)) {
1176 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
1177 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1189 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
1191 else if (type ==
kDCal) {
1192 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
1198 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->GetArrayName().Data());
1203 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
1208 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
1210 else if (type ==
kDCal) {
1211 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
1213 TLorentzVector leadPart;
1216 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1221 histname = TString::Format(
"%s/JetHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
1223 else if (type ==
kDCal) {
1224 histname = TString::Format(
"%s/JetHistograms/hZVsPtDCal", jets->GetArrayName().Data());
1226 const AliVTrack* track;
1227 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
1228 track =
static_cast<AliVTrack*
>(jet->Track(i));
1229 z = track->Pt() / TMath::Abs(corrPt);
1235 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
1237 else if (type ==
kDCal) {
1238 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
1244 const AliVCluster* clus =
nullptr;
1245 Int_t nClusters = jet->GetNumberOfClusters();
1246 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1247 clus = jet->Cluster(iClus);
1248 deltaEhadcorr += (clus->GetNonLinCorrEnergy() - clus->GetHadCorrEnergy());
1251 histname = TString::Format(
"%s/JetHistograms/hDeltaEHadCorr", jets->GetArrayName().Data());
1257 histname = TString::Format(
"%s/JetHistograms/hMedPatchJet", jets->GetArrayName().Data());
1278 const AliVCluster* clus;
1282 Double_t clusPhi = it.first.Phi_0_2pi();
1286 if (!clus->IsEMCAL()) {
1292 Int_t nTracksMatched = 0;
1293 const AliVTrack* track =
nullptr;
1294 for (
Int_t itrack=0; itrack < clus->GetNTracksMatched(); itrack++) {
1295 track =
dynamic_cast<AliVTrack*
>(clus->GetTrackMatched(itrack));
1300 Double_t trackPhi = TVector2::Phi_0_2pi(track->GetTrackPhiOnEMCal());
1301 Double_t trackEta = track->GetTrackEtaOnEMCal();
1302 Double_t deta = TMath::Abs(clusEta - trackEta);
1303 Double_t dphi = TMath::Abs(clusPhi - trackPhi);
1306 trackPSum += track->P();
1312 if (trackPSum > 1e-3) {
1313 EoverP = clus->GetNonLinCorrEnergy() / trackPSum;
1316 Double_t deltaE = clus->GetNonLinCorrEnergy() - clus->GetHadCorrEnergy();
1318 if (trackPSum > 1e-3) {
1319 Rcorr = deltaE / trackPSum;
1321 Double_t RcorrClus = deltaE / clus->GetNonLinCorrEnergy();
1327 histname =
"ClusterHistograms/hM02";
1331 if (clus->GetM02() > 0.4) {
1332 histname =
"ClusterHistograms/hNcellsM02G04";
1335 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1336 histname =
"ClusterHistograms/hNcellsM02L04";
1344 histname =
"ClusterHistograms/hMatchedTrackPt";
1347 if (clus->GetM02() > 0.4) {
1348 histname =
"ClusterHistograms/hMatchedTrackPtM02G04";
1351 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1352 histname =
"ClusterHistograms/hMatchedTrackPtM02L04";
1357 histname =
"ClusterHistograms/hMatchedTrackN";
1360 if (clus->GetM02() > 0.4) {
1361 histname =
"ClusterHistograms/hMatchedTrackNM02G04";
1364 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1365 histname =
"ClusterHistograms/hMatchedTrackNM02L04";
1370 histname =
"ClusterHistograms/hM02Matched";
1371 if (nTracksMatched > 0) {
1376 histname =
"ClusterHistograms/hM02Unmatched";
1377 if (nTracksMatched == 0) {
1382 if (nTracksMatched == 1) {
1384 const AliVTrack* track =
dynamic_cast<AliVTrack*
>(clus->GetTrackMatched(0));
1386 Double_t trackEta = track->GetTrackEtaOnEMCal();
1387 Double_t deta = trackEta - clusEta;
1390 histname =
"ClusterHistograms/hDeltaEtaCentral";
1395 histname =
"ClusterHistograms/hDeltaEtaPeripheral";
1406 histname =
"ClusterHistograms/hEoverPM02Central";
1410 histname =
"ClusterHistograms/hEoverPM02Peripheral";
1418 histname =
"ClusterHistograms/hRcorrVsCent";
1423 histname =
"ClusterHistograms/hRcorr0-10";
1429 histname =
"ClusterHistograms/hRcorr50-90";
1434 histname =
"ClusterHistograms/hRcorrClusVsCent";
1439 histname =
"ClusterHistograms/hRcorrClus0-10";
1445 histname =
"ClusterHistograms/hRcorrClus50-90";
1452 histname =
"ClusterHistograms/hTrackMultiplicity";
1465 const AliMCEvent* mcevent =
nullptr;
1467 mcevent = MCEvent();
1490 const AliVCluster* clus;
1491 std::vector<ContributorType> vecContributorTypes;
1492 std::vector<Int_t> vecContributorLabels;
1498 if (!clus->IsEMCAL()) {
1505 const Int_t nLabels = clus->GetNLabels();
1508 vecContributorTypes.clear();
1509 vecContributorLabels.clear();
1510 for (
Int_t iLabel=0; iLabel<nLabels; iLabel++) {
1512 Int_t label = clus->GetLabels()[iLabel];
1513 if (TMath::Abs(label) > 0) {
1516 vecContributorTypes.push_back(contributorType);
1517 vecContributorLabels.push_back(label);
1522 Int_t nLabelsPhysPrim = vecContributorTypes.size();
1524 if (nLabelsPhysPrim == 1) {
1526 contributorType = vecContributorTypes[0];
1528 if (contributorType ==
kPhoton) {
1531 else if (contributorType ==
kElectron) {
1537 else if (contributorType ==
kProton) {
1546 else if (contributorType ==
kK0L) {
1549 else if (contributorType ==
kNeutron) {
1560 else if (nLabelsPhysPrim == 2) {
1568 Double_t frac1 = clus->GetClusterMCEdepFraction(1);
1576 if (isHadron1 && isHadron2) {
1579 else if (isPhoton1 && isHadron2) {
1583 Double_t photonEnergy = clus->GetNonLinCorrEnergy() * (1 - frac1);
1584 histname =
"ClusterHistogramsMC/hPhotonHadronPhotonEnergy";
1587 else if (isHadron1 && isPhoton2) {
1591 Double_t hadronEnergy = clus->GetNonLinCorrEnergy() * (1 - frac1);
1592 histname =
"ClusterHistogramsMC/hHadronPhotonHadronEnergy";
1595 else if (isPhoton1 && isPhoton2) {
1603 if (part1 && part2) {
1604 Int_t iMother1 = part1->GetMother();
1605 Int_t iMother2 = part2->GetMother();
1606 AliVParticle *mother1 = mcevent->GetTrack(iMother1);
1607 AliVParticle *mother2 = mcevent->GetTrack(iMother2);
1609 if (mother1 && mother2) {
1610 if ( (mother1->PdgCode() == 111) && (mother2->PdgCode() == 111) ) {
1611 if (iMother1 == iMother2) {
1623 else if (nLabelsPhysPrim > 2) {
1629 histname =
"ClusterHistogramsMC/hM02VsParticleTypeCentral";
1630 fHistManager.
FillTH3(histname, clus->GetM02(), clus->GetNonLinCorrEnergy(), particleType);
1633 histname =
"ClusterHistogramsMC/hM02VsParticleTypePeripheral";
1634 fHistManager.
FillTH3(histname, clus->GetM02(), clus->GetNonLinCorrEnergy(), particleType);
1647 const AliVCluster* clus;
1649 for (
const auto jet : jets->
accepted()) {
1654 Double_t hadCaloEnergyUnmatched = 0;
1655 Double_t hadCaloEnergyMatchedNonlincorr = 0;
1656 Double_t hadCaloEnergyMatchedHadCorr = 0;
1659 Int_t nClusters = jet->GetNumberOfClusters();
1660 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1662 clus = jet->Cluster(iClus);
1666 Int_t label = TMath::Abs(clus->GetLabel());
1672 histname =
"JetPerformanceMC/hM02VsContributorTypeJets";
1673 Double_t x[4] = {clus->GetM02(), clus->GetNonLinCorrEnergy(), contributorType, jetPt};
1679 Bool_t hasMatchedTrack = (clus->GetNTracksMatched() > 0);
1681 if (hasMatchedTrack) {
1682 hadCaloEnergyMatchedNonlincorr += clus->GetNonLinCorrEnergy();
1683 hadCaloEnergyMatchedHadCorr += clus->GetHadCorrEnergy();
1686 hadCaloEnergyUnmatched += clus->GetNonLinCorrEnergy();
1695 histname =
"JetPerformance/hHadCaloEnergyUnmatched";
1699 histname =
"JetPerformance/hHadCaloEnergyMatchedNonlincorr";
1703 histname =
"JetPerformance/hHadCaloEnergyMatchedHadCorr";
1707 histname =
"JetPerformanceMC/hJetComposition";
1708 for (
Int_t type = 0; type < 8; type++) {
1715 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1717 clus = jet->Cluster(iClus);
1719 Int_t label = TMath::Abs(clus->GetLabel());
1724 if (type == contributorType) {
1726 pTsum += clus->GetNonLinCorrEnergy();
1731 Double_t x[4] = {jetPt, 1.*type, nSum, pTsum};
1751 Double_t phiMinEMCal =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
1752 Double_t phiMaxEMCal =
fGeom->GetEMCALPhiMax() * TMath::DegToRad();
1756 Double_t accTPC = 2 * etaTPC * 2 * TMath::Pi();
1757 Double_t accEMCal = 2 * etaEMCal * (phiMaxEMCal - phiMinEMCal);
1763 while ((jetCont = static_cast<AliJetContainer*>(nextJetColl()))) {
1766 TRandom3* r =
new TRandom3(0);
1767 Double_t jetR = jetCont->GetJetRadius();
1768 Double_t etaEMCalfid = etaEMCal - jetR;
1769 Double_t phiMinEMCalfid = phiMinEMCal + jetR;
1770 Double_t phiMaxEMCalfid = phiMaxEMCal - jetR;
1773 Double_t etaEMCalRC = r->Uniform(-etaEMCalfid, etaEMCalfid);
1774 Double_t phiEMCalRC = r->Uniform(phiMinEMCalfid, phiMaxEMCalfid);
1784 std::vector<std::vector<Double_t>> trackPtSumDCalRC(
fNEtaBins, std::vector<Double_t>(
fNPhiBins));
1785 std::vector<std::vector<Double_t>> clusESumDCalRC(
fNEtaBins, std::vector<Double_t>(
fNPhiBins));
1798 track = trackIterator.first;
1799 trackEta = track.Eta();
1801 trackPt = track.Pt();
1804 if (TMath::Abs(trackEta) < etaTPC) {
1805 trackPtSumTPC += trackPt;
1809 if (TMath::Abs(trackEta) < etaEMCal && trackPhi > phiMinEMCal && trackPhi < phiMaxEMCal) {
1810 trackPtSumEMCal += trackPt;
1814 deltaR =
GetDeltaR(&track, etaEMCalRC, phiEMCalRC);
1815 if (deltaR < jetR) {
1816 trackPtSumEMCalRC += trackPt;
1831 clus = clusIterator.first;
1832 clusEta = clus.Eta();
1837 if (TMath::Abs(clusEta) < etaEMCal && clusPhi > phiMinEMCal && clusPhi < phiMaxEMCal) {
1838 clusESumEMCal += clusE;
1842 deltaR =
GetDeltaR(&clus, etaEMCalRC, phiEMCalRC);
1843 if (deltaR < jetR) {
1844 clusESumEMCalRC += clusE;
1850 Double_t numerator = (trackPtSumEMCal + clusESumEMCal) / accEMCal;
1851 Double_t denominator = trackPtSumTPC / accTPC;
1852 Double_t scaleFactor = numerator / denominator;
1853 TString histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jetCont->GetArrayName().Data());
1857 Double_t rho = jetCont->GetRhoVal();
1858 Double_t deltaPt = trackPtSumEMCalRC + clusESumEMCalRC - rho * TMath::Pi() * jetR * jetR;
1859 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jetCont->GetArrayName().Data());
1877 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1878 TString jetContName = jets->GetName();
1883 histname = TString::Format(
"%s/TriggerSimHistograms/hRhoVsCent", jets->GetArrayName().Data());
1887 for (
auto jet : jets->
all()) {
1893 histname = TString::Format(
"%s/TriggerSimHistograms/hAreaVsPt", jets->GetArrayName().Data());
1897 UInt_t rejectionReason = 0;
1898 if (!jets->
AcceptJet(jet, rejectionReason)) {
1899 histname = TString::Format(
"%s/TriggerSimHistograms/hJetRejectionReason", jets->GetArrayName().Data());
1900 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1912 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
1914 else if (type ==
kDCal) {
1915 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
1920 histname = TString::Format(
"%s/TriggerSimHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
1925 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
1927 else if (type ==
kDCal) {
1928 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
1930 TLorentzVector leadPart;
1933 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1938 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
1940 else if (type ==
kDCal) {
1941 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtDCal", jets->GetArrayName().Data());
1943 const AliVTrack* track;
1944 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
1945 track =
static_cast<AliVTrack*
>(jet->Track(i));
1946 z = track->Pt() / TMath::Abs(corrPt);
1952 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
1954 else if (type ==
kDCal) {
1955 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
1974 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1975 TString jetContName = jets->GetName();
1978 if (jetContName.Contains(
"mcparticles")) {
1987 for (
auto jet : jets->
accepted()) {
2006 histname =
"MatchedJetHistograms/hResponseMatrixEMCal";
2008 else if (type ==
kDCal) {
2009 histname =
"MatchedJetHistograms/hResponseMatrixDCal";
2015 histname =
"MatchedJetHistograms/hJESshiftEMCal";
2017 else if (type ==
kDCal) {
2018 histname =
"MatchedJetHistograms/hJESshiftDCal";
2023 histname =
"MatchedJetHistograms/hNEFVsPt";
2027 histname =
"MatchedJetHistograms/hZLeadingVsPt";
2028 TLorentzVector leadPart;
2031 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
2035 histname =
"MatchedJetHistograms/hMatchingDistance";
2052 TString histname =
"ClusterHistogramsMC/hClusterRejectionReasonMC";
2053 UInt_t rejectionReason = 0;
2056 return contributorType;
2059 if (part->GetGeneratorIndex() == 0) {
2067 else if (TMath::Abs(pdg) == 211) {
2070 else if (pdg == 2212) {
2073 else if (pdg == -2212) {
2076 else if (TMath::Abs(pdg) == 321) {
2079 else if (pdg == 130) {
2080 contributorType =
kK0L;
2082 else if (pdg == 2112) {
2085 else if (pdg == -2112) {
2088 else if (TMath::Abs(pdg) == 11) {
2091 else if (TMath::Abs(pdg) == 13) {
2092 contributorType =
kMuon;
2095 contributorType =
kOther;
2099 return contributorType;
2108 Double_t deltaEta = TMath::Abs(part->Eta() - etaRef);
2109 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
2151 const char *ntracks,
2152 const char *nclusters,
2153 const char *nGenLev,
2163 ::Error(
"AddTaskEmcalJetPerformance",
"No analysis manager to connect to.");
2169 AliVEventHandler* handler = mgr->GetInputEventHandler();
2172 ::Error(
"AddTaskEmcalJetPerformance",
"This task requires an input event handler");
2184 if (handler->InheritsFrom(
"AliESDInputHandler")) {
2187 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
2198 if (trackName ==
"usedefault") {
2199 if (dataType ==
kESD) {
2200 trackName =
"Tracks";
2202 else if (dataType ==
kAOD) {
2203 trackName =
"tracks";
2210 if (clusName ==
"usedefault") {
2211 if (dataType ==
kESD) {
2212 clusName =
"CaloClusters";
2214 else if (dataType ==
kAOD) {
2215 clusName =
"caloClusters";
2222 TString name(
"AliAnalysisTaskEmcalJetPerformance");
2223 if (!trackName.IsNull()) {
2227 if (!clusName.IsNull()) {
2231 if (strcmp(suffix,
"") != 0) {
2244 if (trackName ==
"mcparticles") {
2246 partCont = mcpartCont;
2248 else if (trackName ==
"tracks" || trackName ==
"Tracks") {
2250 partCont = trackCont;
2256 if (nGenLev && strcmp(nGenLev,
"")!=0) {
2264 if (!clusName.IsNull()) {
2278 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
2280 contname +=
"_histos";
2281 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
2282 TList::Class(),AliAnalysisManager::kOutputContainer,
2283 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
2284 mgr->ConnectInput (task, 0, cinput1 );
2285 mgr->ConnectOutput (task, 1, coutput1 );
TObjArray fClusterCollArray
cluster collection array
void SetParticlePtCut(Double_t cut)
Double_t GetRhoVal() const
const TString & GetRhoName() const
AliJetContainer * GetJetContainer(Int_t i=0) const
UInt_t fOffTrigger
offline trigger for event selection
void AdoptParticleContainer(AliParticleContainer *cont)
static AliEmcalDownscaleFactorsOCDB * Instance()
const AliClusterIterableMomentumContainer accepted_momentum() const
Container with name, TClonesArray and cuts for particles.
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
Fill a 2D histogram within the container.
AliEmcalJet * MatchedJet() const
Declaration of class AliTLorentzVector.
void SetRun(int runnumber)
void FillTH3(const char *hname, double x, double y, double z, double weight=1., Option_t *opt="")
Fill a 3D histogram within the container.
Declaration of class AliAnalysisTaskEmcalEmbeddingHelper.
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
Double_t GetDownscaleFactorForTriggerClass(const TString &trigger) const
Container for particles within the EMCAL framework.
void SetCaloTriggerPatchInfoName(const char *n)
void AdoptClusterContainer(AliClusterContainer *cont)
virtual Bool_t AcceptMCParticle(const AliAODMCParticle *vp, UInt_t &rejectionReason) const
bool AddQAPlotsToList(TList *list)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet *jet) const
void FillTHnSparse(const char *name, const double *x, double weight=1., Option_t *opt="")
bool IsInitialized() const
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
Create a new TH2 within the container.
THashList * GetListOfHistograms() const
Get the list of histograms.
Double_t GetLeadingHadronPt(const AliEmcalJet *jet) const
AliEMCALGeometry * fGeom
!emcal geometry
UInt_t GetJetAcceptanceType() const
Double_t Phi_0_2pi() const
Implementation of task to embed external events.
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
Create a new TH1 within the container.
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
std::vector< TString > GetTriggerClasses() const
Double_t fCent
!event centrality
Int_t GetNAcceptedTracks()
AliMCParticleContainer * AddMCParticleContainer(const char *n)
Create new container for MC particles and attach it to the task.
static Double_t GetParallelFraction(AliVParticle *part1, AliVParticle *part2)
Calculates the fraction of momentum z of part 1 w.r.t. part 2 in the direction of part 2...
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Fill a 1D histogram within the container.
TObjArray fJetCollArray
jet collection array
AliRhoParameter * GetRhoParameter()
void RecordEmbeddedEventProperties()
virtual Bool_t IsEventSelected()
Performing event selection.
static Double_t * GenerateFixedBinArray(Int_t n, Double_t min, Double_t max)
AliEmcalList * fOutput
!output list
AliMCParticleContainer * GetMCParticleContainer(Int_t i=0) const
Handler for downscale factors for various triggers obtained from the OCDB.
void SelectPhysicalPrimaries(Bool_t s)
TClonesArray * fTriggerPatchInfo
!trigger patch info array
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
const AliTrackIterableMomentumContainer accepted_momentum() const
Int_t GetRunNumber(TString)
void SetClusPtCut(Double_t cut)
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
Main initialization function on the worker.
const AliJetIterableContainer accepted() const
EDataType_t
Switch for the data type.
DCal acceptance – spans ONLY DCal (no PHOS or gap)
void SetClusECut(Double_t cut)
THnSparse * CreateTHnSparse(const char *name, const char *title, int ndim, const int *nbins, const double *min, const double *max, Option_t *opt="")
Create a new THnSparse within the container.
Container structure for EMCAL clusters.
Container for MC-true particles within the EMCAL framework.
virtual AliAODMCParticle * GetMCParticleWithLabel(Int_t lab) const
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
Container for jet within the EMCAL jet framework.
TH3 * CreateTH3(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, int nbinsz, double zmin, double zmax, Option_t *opt="")
Create a new TH2 within the container.
const AliJetIterableContainer all() const
static const AliAnalysisTaskEmcalEmbeddingHelper * GetInstance()