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),
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()