30 #include <TClonesArray.h> 35 #include <THnSparse.h> 40 #include <AliVCluster.h> 41 #include <AliVParticle.h> 43 #include "AliAnalysisManager.h" 44 #include <AliVEventHandler.h> 51 #include "AliEMCALGeometry.h" 52 #include "AliOADBContainer.h" 54 #include "AliEMCALTriggerPatchInfo.h" 56 #include "AliMCEvent.h" 69 fPlotJetHistograms(kFALSE),
70 fPlotClusterHistograms(kFALSE),
71 fPlotCellNonlinearityHistograms(kFALSE),
72 fPlotParticleCompositionHistograms(kFALSE),
73 fComputeBackground(kFALSE),
74 fDoTriggerSimulation(kFALSE),
75 fPlotMatchedJetHistograms(kFALSE),
76 fComputeMBDownscaling(kFALSE),
78 fDoClosureTest(kFALSE),
79 fFillChargedFluctuations(kFALSE),
92 fTrackMatchingDeltaEtaMax(0.015),
93 fTrackMatchingDeltaPhiMax(0.030),
98 fDoTriggerResponse(kFALSE),
99 fDoJetMatchingGeometrical(kFALSE),
100 fDoJetMatchingMCFraction(kFALSE),
101 fDoDifferentialRM(kFALSE),
105 fDetJetContainerPPIntermediate(
nullptr),
106 fRequireMatchedJetAccepted(kFALSE),
108 fMinSharedMomentumFraction(0.5),
109 fMCJetMinMatchingPt(0.15),
110 fDetJetMinMatchingPt(0.15),
111 fPlotJetMatchCandThresh(1.),
112 fUseAliEventCuts(kTRUE),
115 fUseManualEventCuts(kFALSE),
246 fEventCuts.fUseVariablesCorrelationCuts =
true;
261 Printf(
"Geometrical jet matching enabled.");
263 for (
Int_t i=0; i<2; i++) {
265 TString jetContName = jetCont->GetName();
266 if (jetContName.Contains(
"mcparticles")) {
276 Printf(
"MC-fraction jet matching enabled.");
278 for (
Int_t i=0; i<3; i++) {
280 TString jetContName = jetCont->GetName();
281 if (jetContName.Contains(
"mcparticles")) {
284 else if (jetContName.Contains(
"Combined")) {
295 Printf(
"No MC jet container found!");
300 Printf(
"No det-level jet container found!");
306 Printf(
"No intermediate pp det-level jet container found, despite MC-fraction matching enabled!");
338 if (embeddingHelper) {
347 while ((obj = next())) {
369 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
378 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->
GetArrayName().Data());
380 title = histname +
";Centrality (%);Rejection reason;#it{p}_{T,corr} (GeV/#it{c});counts";
381 TH3* hist =
fHistManager.
CreateTH3(histname.Data(), title.Data(), 10, 0, 100, 32, 0, 32, nPtBins5,
fMinPt,
fMaxPt);
384 title = histname +
";Rejection reason;#it{p}_{T,corr} (GeV/#it{c});counts";
391 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->
GetArrayName().Data());
393 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
397 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
407 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtEMCal", jets->
GetArrayName().Data());
409 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
410 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
413 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});NEF";
418 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtDCal", jets->
GetArrayName().Data());
420 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
421 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
424 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});NEF";
431 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->
GetArrayName().Data());
432 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});type";
433 fHistManager.
CreateTH3(histname.Data(), title.Data(), 20, 0, 100, nPtBins2,
fMinPt,
fMaxPt, 2, -0.5, 1.5,
"s");
437 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->
GetArrayName().Data());
439 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
440 fHistManager.
CreateTH3(histname.Data(), title.Data(), 10, 0, 100, nPtBins2,
fMinPt,
fMaxPt,
fMaxPt, 0,
fMaxPt);
443 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
448 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->
GetArrayName().Data());
450 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}/#pi#it{R}^{2}";
451 fHistManager.
CreateTH3(histname.Data(), title.Data(), 10, 0, 100, nPtBins2,
fMinPt,
fMaxPt, 75, 0, 3);
454 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}/#pi#it{R}^{2}";
459 nbinsx = 20; minx = 0; maxx = 100;
461 nbinsz = 50; minz = 0; maxz = 1.;
463 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtEMCal", jets->
GetArrayName().Data());
465 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
466 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
469 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
474 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtDCal", jets->
GetArrayName().Data());
476 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
477 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
480 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
486 nbinsx = 20; minx = 0; maxx = 100;
488 nbinsz = 50; minz = 0; maxz = 1.;
490 histname = TString::Format(
"%s/JetHistograms/hZVsPtEMCal", jets->
GetArrayName().Data());
492 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
493 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
496 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
501 histname = TString::Format(
"%s/JetHistograms/hZVsPtDCal", jets->
GetArrayName().Data());
503 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
504 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
507 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
513 nbinsx = 20; minx = 0; maxx = 100;
515 nbinsz = 50; minz = 0; maxz =
fMaxPt;
517 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtEMCal", jets->
GetArrayName().Data());
519 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
520 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
523 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
528 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtDCal", jets->
GetArrayName().Data());
530 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
531 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
534 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
541 nbinsx = 20; minx = 0; maxx = 100;
544 histname = TString::Format(
"%s/JetHistograms/hEtaPosVsPtEMCal", jets->
GetArrayName().Data());
545 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c})";
548 histname = TString::Format(
"%s/JetHistograms/hEtaNegVsPtEMCal", jets->
GetArrayName().Data());
549 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c})";
555 nbinsx = 20; minx = 0; maxx = 100;
559 histname = TString::Format(
"%s/JetHistograms/hDeltaEHadCorr", jets->
GetArrayName().Data());
560 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#sum#it{E}_{nonlincorr} - #it{E}_{hadcorr}";
561 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
566 histname = TString::Format(
"%s/JetHistograms/hMedPatchJet", jets->
GetArrayName().Data());
567 title = histname +
";#it{E}_{patch,med};type;#it{p}_{T}^{corr} (GeV/#it{c});Centrality (%)";
568 Int_t nbins5[4] = {100, 2, nPtBins2, 50};
578 histname =
"Trigger/hMBDownscaleFactor";
579 title = histname +
";Downscale factor;counts";
593 const Int_t nRcorrBins = 50;
595 const Int_t nCellBins = 30;
597 const Int_t nMatchedTrackBins = 5;
599 const Int_t nDeltaEtaBins = 60;
606 histname =
"ClusterHistograms/hM02";
607 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
611 histname =
"ClusterHistograms/hNcellsM02G04";
612 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); Ncells";
615 histname =
"ClusterHistograms/hNcellsM02L04";
616 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); Ncells";
623 histname =
"ClusterHistograms/hMatchedTrackPt";
624 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
627 histname =
"ClusterHistograms/hMatchedTrackPtM02G04";
628 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
631 histname =
"ClusterHistograms/hMatchedTrackPtM02L04";
632 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
636 histname =
"ClusterHistograms/hMatchedTrackN";
637 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
640 histname =
"ClusterHistograms/hMatchedTrackNM02G04";
641 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
644 histname =
"ClusterHistograms/hMatchedTrackNM02L04";
645 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
649 histname =
"ClusterHistograms/hM02Matched";
650 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
654 histname =
"ClusterHistograms/hM02Unmatched";
655 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
659 histname =
"ClusterHistograms/hDeltaEtaCentral";
660 htitle = histname +
";#eta_{track} - #eta_{clus};#it{E}_{clus} (GeV); M02";
663 histname =
"ClusterHistograms/hDeltaEtaPeripheral";
664 htitle = histname +
";#eta_{track} - #eta_{clus};#it{E}_{clus} (GeV); M02";
671 histname =
"ClusterHistograms/hEoverPM02Central";
672 htitle = histname +
";#it{E}_{clus} (GeV); #it{E}_{clus} / #Sigma#it{p}_{track} (GeV); M02";
675 histname =
"ClusterHistograms/hEoverPM02Peripheral";
676 htitle = histname +
";#it{E}_{clus} (GeV); #it{E}_{clus} / #Sigma#it{p}_{track} (GeV); M02";
683 histname =
"ClusterHistograms/hRcorrVsCent";
684 htitle = histname +
";Centrality (%);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
688 histname =
"ClusterHistograms/hRcorr0-10";
689 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
693 histname =
"ClusterHistograms/hRcorr50-90";
694 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
698 histname =
"ClusterHistograms/hRcorrClusVsCent";
699 htitle = histname +
";Centrality (%);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
703 histname =
"ClusterHistograms/hRcorrClus0-10";
704 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
708 histname =
"ClusterHistograms/hRcorrClus50-90";
709 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
713 histname =
"ClusterHistograms/hTrackMultiplicity";
714 htitle = histname +
";N_{tracks};Centrality (%)";
728 histname =
"CellNonlinearityHistograms/hClusterNonlinearity";
729 htitle = histname +
";E_{cluster}; E_{NonLinCorr}/E";
733 histname =
"CellNonlinearityHistograms/hCellNonlinearity";
734 htitle = histname +
";E_{cell}; E_{NonLinCorr}/E";
738 histname =
"CellNonlinearityHistograms/hLeadingCellNonlinearity";
739 htitle = histname +
";E_{leading cell}; E_{NonLinCorr}/E";
753 const Int_t nRejBins = 32;
756 const Int_t nContributorTypes = 11;
758 const Int_t nParticleTypes = 17;
763 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) {
765 histname =
"ClusterHistogramsMC/hClusterRejectionReasonMC";
766 htitle = histname +
";Rejection reason;#it{E}_{clus} (GeV/)";
772 histname =
"ClusterHistogramsMC/hM02VsParticleTypeCentral";
773 htitle = histname +
";M02;#it{E}_{clus} (GeV); Particle type";
777 histname =
"ClusterHistogramsMC/hM02VsParticleTypePeripheral";
778 htitle = histname +
";M02;#it{E}_{clus} (GeV); Particle type";
783 histname =
"ClusterHistogramsMC/hPhotonHadronPhotonEnergy";
784 htitle = histname +
";Centrality (%);M02;#it{E}_{photon} (GeV)";
788 histname =
"ClusterHistogramsMC/hHadronPhotonHadronEnergy";
789 htitle = histname +
";Centrality (%);M02;#it{E}_{hadron} (GeV)";
805 min[dim] = fM02HistBins[0];
809 title[dim] =
"#it{E}_{clus} (GeV)";
812 min[dim] = fPtHistBins[0];
816 title[dim] =
"Contributor type";
817 nbins[dim] = nContributorTypes;
820 binEdges[dim] = contributorTypeBins;
823 title[dim] =
"#it{p}_{T,jet}^{corr}";
830 TString thnname =
"JetPerformanceMC/hM02VsContributorTypeJets";
832 for (
Int_t i = 0; i < dim; i++) {
833 hn->GetAxis(i)->SetTitle(title[i]);
834 hn->SetBinEdges(i, binEdges[i]);
841 title[dim] =
"#it{p}_{T,jet}^{corr}";
848 title[dim] =
"Contributor type";
849 nbins[dim] = nContributorTypes;
852 binEdges[dim] = contributorTypeBins;
862 title[dim] =
"#it{p}_{T,sum} (GeV)";
865 min[dim] = fPtHistBins[0];
869 thnname =
"JetPerformanceMC/hJetComposition";
871 for (
Int_t i = 0; i < dim; i++) {
872 thn->GetAxis(i)->SetTitle(title[i]);
873 thn->SetBinEdges(i, binEdges[i]);
879 histname =
"JetPerformance/hHadCaloEnergyUnmatched";
880 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
884 histname =
"JetPerformance/hHadCaloEnergyMatchedNonlincorr";
885 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
889 histname =
"JetPerformance/hHadCaloEnergyMatchedHadCorr";
890 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
902 axis->SetBinLabel(1,
"SinglePhoton");
903 axis->SetBinLabel(2,
"SingleElectron");
904 axis->SetBinLabel(3,
"SingleChargedPion");
905 axis->SetBinLabel(4,
"SingleProton");
906 axis->SetBinLabel(5,
"SingleAntiProton");
907 axis->SetBinLabel(6,
"SingleChargedKaon");
908 axis->SetBinLabel(7,
"SingleK0L");
909 axis->SetBinLabel(8,
"SingleNeutron");
910 axis->SetBinLabel(9,
"SingleAntiNeutron");
911 axis->SetBinLabel(10,
"SingleOther");
912 axis->SetBinLabel(11,
"PhotonHadron");
913 axis->SetBinLabel(12,
"HadronPhoton");
914 axis->SetBinLabel(13,
"MergedPi0");
915 axis->SetBinLabel(14,
"PhotonPhotonOther");
916 axis->SetBinLabel(15,
"HadronHadron");
917 axis->SetBinLabel(16,
"TwoContributorsOther");
918 axis->SetBinLabel(17,
"MoreThanTwoContributors");
932 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
935 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jets->
GetArrayName().Data());
936 title = histname +
";Centrality;Scale factor;counts";
938 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jets->
GetArrayName().Data());
940 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
944 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
947 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCalExcl", jets->
GetArrayName().Data());
949 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
953 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
957 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCalCharged", jets->
GetArrayName().Data());
959 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
963 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
966 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCalChargedExcl", jets->
GetArrayName().Data());
968 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
972 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
976 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCalFid", jets->
GetArrayName().Data());
977 title = histname +
";Centrality;Scale factor;counts";
982 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCal", jets->
GetArrayName().Data());
983 title = histname +
";Centrality;Scale factor;counts";
986 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtDCal", jets->
GetArrayName().Data());
987 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
990 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCalFid", jets->
GetArrayName().Data());
991 title = histname +
";Centrality;Scale factor;counts";
1014 histname =
"TriggerSimHistograms/hEtaVsPhi";
1015 title = histname +
";#eta_{patch} (rad);#phi_{patch} (rad)";
1019 histname =
"TriggerSimHistograms/hNPatches";
1020 title = histname +
";#it{N}_{patches};type";
1024 histname =
"TriggerSimHistograms/hPatchE";
1025 title = histname +
";Centrality (%);#it{E}_{patch} (GeV)";
1029 histname =
"TriggerSimHistograms/hPatchMedianE";
1030 title = histname +
";Centrality (%);#it{E}_{patch,med} (GeV);type";
1031 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, 0, 100, 100, 0, 50, 2, -0.5, 1.5);
1034 histname =
"TriggerSimHistograms/hMaxPatchResponseMatrix";
1035 title = histname +
";#it{E}_{maxpatch,det} (GeV);#it{E}_{maxpatch,truth} (GeV)";
1038 histname =
"TriggerSimHistograms/hEMCalEnergyResponseMatrix";
1039 title = histname +
";#Sigma#it{E}_{clus,EMCal} (GeV);#it{E}_{EMCal,truth} (GeV)";
1047 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1050 histname = TString::Format(
"%s/TriggerSimHistograms/hJetRejectionReason", jets->
GetArrayName().Data());
1051 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
1057 histname = TString::Format(
"%s/TriggerSimHistograms/hRhoVsCent", jets->
GetArrayName().Data());
1058 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
1067 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtEMCal", jets->
GetArrayName().Data());
1068 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
1069 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1072 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtDCal", jets->
GetArrayName().Data());
1073 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
1074 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1078 histname = TString::Format(
"%s/TriggerSimHistograms/hPtLeadingVsPt", jets->
GetArrayName().Data());
1079 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
1083 histname = TString::Format(
"%s/TriggerSimHistograms/hAreaVsPt", jets->
GetArrayName().Data());
1084 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}/#pi#it{R}^{2}";
1088 nbinsx = 20; minx = 0; maxx = 100;
1090 nbinsz = 50; minz = 0; maxz = 1.;
1092 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtEMCal", jets->
GetArrayName().Data());
1093 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
1094 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1097 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtDCal", jets->
GetArrayName().Data());
1098 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
1099 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1103 nbinsx = 20; minx = 0; maxx = 100;
1105 nbinsz = 50; minz = 0; maxz = 1.;
1107 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtEMCal", jets->
GetArrayName().Data());
1108 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
1109 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1112 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtDCal", jets->
GetArrayName().Data());
1113 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
1114 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1118 nbinsx = 20; minx = 0; maxx = 100;
1120 nbinsz = 50; minz = 0; maxz =
fMaxPt;
1122 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtEMCal", jets->
GetArrayName().Data());
1123 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
1124 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1127 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtDCal", jets->
GetArrayName().Data());
1128 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
1129 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1143 jetR = jetCont1->GetJetRadius();
1161 TString titleThn[6]= {
"#it{p}_{T}^{truth} (GeV/#it{c})",
"#it{p}_{T,corr}^{det} (GeV/#it{c})",
"#Delta#it{R}",
"shared mom fraction" ,
"angularity",
"Centrality (%)"};
1163 Double_t minThn[6] = {0., 0., 0., 0.,0., 0.};
1165 histname =
"MatchedJetHistograms/hResponseMatrixEMCalDiff";
1168 for (
Int_t i = 0; i < 6; i++) {
1169 thn->GetAxis(i)->SetTitle(titleThn[i]);
1175 histname =
"MatchedJetHistograms/hResponseMatrixEMCal";
1177 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
1178 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1181 title = histname +
";#it{p}_{T,corr}^{det} (GeV/#it{c});#it{p}_{T}^{truth} (GeV/#it{c})";
1187 histname =
"MatchedJetHistograms/hResponseMatrixDCal";
1189 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
1190 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1193 title = histname +
";#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
1199 nbinsx = 20; minx = 0; maxx = 100;
1200 nbinsy = nPtBinsTruth2; miny = 0; maxy =
fMaxPt;
1201 nbinsz = 250; minz = -5.; maxz = 5.;
1203 histname =
"MatchedJetHistograms/hJESshiftEMCal";
1205 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
1206 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1212 title = histname +
";#Delta#it{R};#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
1213 fHistManager.
CreateTH3(histname.Data(), title.Data(),nbinsxR, minxR, maxxR,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1217 histname =
"MatchedJetHistograms/hJESshiftDCal";
1219 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
1220 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1223 title = histname +
";#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
1229 nbinsx = 20; minx = 0; maxx = 100;
1231 nbinsz = 50; minz = 0; maxz = 1.;
1233 histname =
"MatchedJetHistograms/hNEFVsPt";
1235 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});Calo energy fraction";
1236 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1239 title = histname +
";#it{p}_{T}^{truth} (GeV/#it{c});Calo energy fraction";
1244 nbinsx = 20; minx = 0; maxx = 100;
1245 nbinsy = nPtBinsTruth2; miny = 0; maxy =
fMaxPt;
1246 nbinsz = 50; minz = 0; maxz = 1.;
1248 histname =
"MatchedJetHistograms/hZLeadingVsPt";
1250 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{z}_{leading}";
1251 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1254 title = histname +
";#it{p}_{T}^{truth} (GeV/#it{c});#it{z}_{leading}";
1262 nbinsy = nPtBinsTruth2; miny = 0; maxy =
fMaxPt;
1263 nbinsz = 15; minz = 0; maxz = 1.5*jetR;
1264 histname =
"MatchedJetHistograms/hMatchingDistance";
1265 title = histname +
";#it{p}_{T}^{det} (GeV/#it{c});#it{p}_{T}^{truth} (GeV/#it{c});R";
1266 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
fMaxPt, miny, maxy, nbinsz, minz, maxz);
1269 histname =
"MatchedJetHistograms/fHistJetMatchingQA";
1271 std::vector<std::string> binLabels = {
"noMatch",
"matchedJet",
"uniqueMatch",
"jetDistance",
"passedAllCuts"};
1272 auto histMatchedJetCuts =
fHistManager.
CreateTH1(histname.Data(), title.Data(), binLabels.size(), 0, binLabels.size());
1274 for (
unsigned int i = 1; i <= binLabels.size(); i++) {
1275 histMatchedJetCuts->GetXaxis()->SetBinLabel(i, binLabels.at(i-1).c_str());
1277 histMatchedJetCuts->GetYaxis()->SetTitle(
"Number of jets");
1284 nbinsy = 20; miny = 0; maxy = 1.;
1285 nbinsz = 15; minz = 0; maxz = 1.5*jetR;
1286 histname =
"MatchedJetHistograms/hMatchingDistanceVsMCFraction";
1287 title = histname +
";#it{p}_{T}^{det} (GeV/#it{c});MC fraction;#DeltaR";
1288 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
1291 histname =
"MatchedJetHistograms/fHistJetMatchingQA";
1293 std::vector<std::string> binLabels = {
"noMatch",
"matchedJet",
"sharedMomentumFraction",
"partLevelMatchedJet",
"jetDistancePPdet",
"jetDistancePPtruth",
"passedAllCuts"};
1294 auto histMatchedJetCuts =
fHistManager.
CreateTH1(histname.Data(), title.Data(), binLabels.size(), 0, binLabels.size());
1296 for (
unsigned int i = 1; i <= binLabels.size(); i++) {
1297 histMatchedJetCuts->GetXaxis()->SetBinLabel(i, binLabels.at(i-1).c_str());
1299 histMatchedJetCuts->GetYaxis()->SetTitle(
"Number of jets");
1324 TClass cls(objname);
1325 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
1326 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",
1327 GetName(), cls.GetName(),
"EmcalTriggers"));
1332 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
1352 TString triggerNameMB1 =
"CINT7-B-NOPF-CENT";
1353 TString triggerNameMB2 =
"CV0L7-B-NOPF-CENT";
1354 TString triggerNameJE =
"CINT7EJ1-B-NOPF-CENTNOPMD";
1359 for (
auto i : runtriggers) {
1360 if (i.EqualTo(triggerNameMB1) || i.EqualTo(triggerNameMB2)) {
1369 TString histname =
"Trigger/hMBDownscaleFactor";
1407 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
1442 TClass cls(objname);
1443 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
1444 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",
1445 GetName(), cls.GetName(),
"EmcalTriggers"));
1450 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
1455 std::vector<Double_t> vecEMCal;
1456 std::vector<Double_t> vecDCal;
1459 AliEMCALTriggerPatchInfo *maxPatch =
nullptr;
1461 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
1464 if(!recpatch->IsJetHighSimple())
continue;
1466 patchE = recpatch->GetPatchE();
1468 histname =
"TriggerSimHistograms/hEtaVsPhi";
1471 histname =
"TriggerSimHistograms/hPatchE";
1474 if (recpatch->IsEMCal()) {
1475 vecEMCal.push_back(patchE);
1476 if (patchE > maxPatchEnergy) {
1477 maxPatchEnergy = patchE;
1478 maxPatch = recpatch;
1481 vecDCal.push_back(patchE);
1488 const Int_t nBkgPatchesEMCal = vecEMCal.size();
1489 const Int_t nBkgPatchesDCal = vecDCal.size();
1490 fMedianEMCal = TMath::Median(nBkgPatchesEMCal, &vecEMCal[0]);
1491 fMedianDCal = TMath::Median(nBkgPatchesDCal, &vecDCal[0]);
1493 histname =
"TriggerSimHistograms/hPatchMedianE";
1497 histname =
"TriggerSimHistograms/hNPatches";
1504 Double_t phiMinEMCal =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
1505 Double_t phiMaxEMCal =
fGeom->GetEMCALPhiMax() * TMath::DegToRad();
1516 part = mcpart.first;
1517 partEta = part.Eta();
1521 if (partPhi < maxPatch->GetPhiMax() && partPhi > maxPatch->GetPhiMin()) {
1522 if (partEta < maxPatch->GetEtaMax() && partEta > maxPatch->GetEtaMin()) {
1523 truthEnergyPatch += partE;
1527 if (partPhi < phiMaxEMCal && partPhi > phiMinEMCal) {
1528 if (partEta < 0.7 && partEta > -0.7) {
1529 truthEnergyEMCal += partE;
1535 const AliVCluster* clus;
1540 clusFourVec.Clear();
1541 clusFourVec = clusIterator.first;
1542 clusEta = clusFourVec.Eta();
1544 clus = clusIterator.second;
1545 if (clus->IsEMCAL()) {
1546 if (clusPhi < phiMaxEMCal && clusPhi > phiMinEMCal) {
1547 if (clusEta < 0.7 && clusEta > -0.7) {
1548 detEnergyEMCal += clusFourVec.E();
1555 histname =
"TriggerSimHistograms/hMaxPatchResponseMatrix";
1559 histname =
"TriggerSimHistograms/hEMCalEnergyResponseMatrix";
1568 for(
auto p : *fTriggerPatchInfo){
1569 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
1572 if(!recpatch->IsJetHighSimple())
continue;
1574 if (recpatch->IsEMCal()) {
1575 if ((recpatch->GetPatchE() -
fMedianDCal) > threshold) {
1580 if ((recpatch->GetPatchE() -
fMedianEMCal) > threshold) {
1631 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1643 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->
GetArrayName().Data());
1647 for (
auto jet : jets->
all()) {
1662 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->
GetArrayName().Data());
1667 fHistManager.
FillTH2(histname.Data(), corrPt, 1.0*jet->Area()/(1.0*TMath::Pi()*pow(jetR,2)));
1671 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->
GetArrayName().Data());
1681 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtEMCal", jets->
GetArrayName().Data());
1683 else if (type ==
kDCal) {
1684 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtDCal", jets->
GetArrayName().Data());
1686 TLorentzVector leadPart;
1689 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1698 UInt_t rejectionReason = 0;
1699 if (!jets->
AcceptJet(jet, rejectionReason)) {
1700 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->
GetArrayName().Data());
1712 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtEMCal", jets->
GetArrayName().Data());
1714 else if (type ==
kDCal) {
1715 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtDCal", jets->
GetArrayName().Data());
1726 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->
GetArrayName().Data());
1732 histname = TString::Format(
"%s/JetHistograms/hZVsPtEMCal", jets->
GetArrayName().Data());
1734 else if (type ==
kDCal) {
1735 histname = TString::Format(
"%s/JetHistograms/hZVsPtDCal", jets->
GetArrayName().Data());
1737 const AliVTrack* track;
1738 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
1739 track =
static_cast<AliVTrack*
>(jet->Track(i));
1740 z = track->Pt() / TMath::Abs(corrPt);
1751 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtEMCal", jets->
GetArrayName().Data());
1753 else if (type ==
kDCal) {
1754 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtDCal", jets->
GetArrayName().Data());
1766 if (jet->Eta() > 0) {
1767 histname = TString::Format(
"%s/JetHistograms/hEtaPosVsPtEMCal", jets->
GetArrayName().Data());
1770 else if (jet->Eta() < 0) {
1771 histname = TString::Format(
"%s/JetHistograms/hEtaNegVsPtEMCal", jets->
GetArrayName().Data());
1780 const AliVCluster* clus =
nullptr;
1781 Int_t nClusters = jet->GetNumberOfClusters();
1782 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1783 clus = jet->Cluster(iClus);
1784 deltaEhadcorr += (clus->GetNonLinCorrEnergy() - clus->GetHadCorrEnergy());
1787 histname = TString::Format(
"%s/JetHistograms/hDeltaEHadCorr", jets->
GetArrayName().Data());
1794 histname = TString::Format(
"%s/JetHistograms/hMedPatchJet", jets->
GetArrayName().Data());
1815 const AliVCluster* clus;
1819 Double_t clusPhi = it.first.Phi_0_2pi();
1823 if (!clus->IsEMCAL()) {
1829 Int_t nTracksMatched = 0;
1830 const AliVTrack* track =
nullptr;
1831 for (
Int_t itrack=0; itrack < clus->GetNTracksMatched(); itrack++) {
1832 track =
dynamic_cast<AliVTrack*
>(clus->GetTrackMatched(itrack));
1837 Double_t trackPhi = TVector2::Phi_0_2pi(track->GetTrackPhiOnEMCal());
1838 Double_t trackEta = track->GetTrackEtaOnEMCal();
1839 Double_t deta = TMath::Abs(clusEta - trackEta);
1840 Double_t dphi = TMath::Abs(clusPhi - trackPhi);
1843 trackPSum += track->P();
1849 if (trackPSum > 1e-3) {
1850 EoverP = clus->GetNonLinCorrEnergy() / trackPSum;
1853 Double_t deltaE = clus->GetNonLinCorrEnergy() - clus->GetHadCorrEnergy();
1855 if (trackPSum > 1e-3) {
1856 Rcorr = deltaE / trackPSum;
1858 Double_t RcorrClus = deltaE / clus->GetNonLinCorrEnergy();
1864 histname =
"ClusterHistograms/hM02";
1868 if (clus->GetM02() > 0.4) {
1869 histname =
"ClusterHistograms/hNcellsM02G04";
1872 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1873 histname =
"ClusterHistograms/hNcellsM02L04";
1881 histname =
"ClusterHistograms/hMatchedTrackPt";
1884 if (clus->GetM02() > 0.4) {
1885 histname =
"ClusterHistograms/hMatchedTrackPtM02G04";
1888 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1889 histname =
"ClusterHistograms/hMatchedTrackPtM02L04";
1894 histname =
"ClusterHistograms/hMatchedTrackN";
1897 if (clus->GetM02() > 0.4) {
1898 histname =
"ClusterHistograms/hMatchedTrackNM02G04";
1901 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1902 histname =
"ClusterHistograms/hMatchedTrackNM02L04";
1907 histname =
"ClusterHistograms/hM02Matched";
1908 if (nTracksMatched > 0) {
1913 histname =
"ClusterHistograms/hM02Unmatched";
1914 if (nTracksMatched == 0) {
1919 if (nTracksMatched == 1) {
1921 const AliVTrack* track =
dynamic_cast<AliVTrack*
>(clus->GetTrackMatched(0));
1923 Double_t trackEta = track->GetTrackEtaOnEMCal();
1924 Double_t deta = trackEta - clusEta;
1927 histname =
"ClusterHistograms/hDeltaEtaCentral";
1932 histname =
"ClusterHistograms/hDeltaEtaPeripheral";
1943 histname =
"ClusterHistograms/hEoverPM02Central";
1947 histname =
"ClusterHistograms/hEoverPM02Peripheral";
1955 histname =
"ClusterHistograms/hRcorrVsCent";
1960 histname =
"ClusterHistograms/hRcorr0-10";
1966 histname =
"ClusterHistograms/hRcorr50-90";
1971 histname =
"ClusterHistograms/hRcorrClusVsCent";
1976 histname =
"ClusterHistograms/hRcorrClus0-10";
1982 histname =
"ClusterHistograms/hRcorrClus50-90";
1989 histname =
"ClusterHistograms/hTrackMultiplicity";
2004 const AliVCluster* clus;
2011 if (!clus->IsEMCAL()) {
2019 Double_t clusEnergyNonLinCorr = clus->GetNonLinCorrEnergy();
2020 Double_t correctionFactor = clusEnergyNonLinCorr/clusEnergy;
2023 TString histname =
"CellNonlinearityHistograms/hClusterNonlinearity";
2027 histname =
"CellNonlinearityHistograms/hCellNonlinearity";
2029 for (
Int_t iCell = 0; iCell < clus->GetNCells(); iCell++) {
2031 Int_t absId = clus->GetCellAbsId(iCell);
2033 if (eCell > leadEcell) {
2041 histname =
"CellNonlinearityHistograms/hLeadingCellNonlinearity";
2054 const AliMCEvent* mcevent =
nullptr;
2056 mcevent = MCEvent();
2079 const AliVCluster* clus;
2080 std::vector<ContributorType> vecContributorTypes;
2081 std::vector<Int_t> vecContributorLabels;
2087 if (!clus->IsEMCAL()) {
2094 const Int_t nLabels = clus->GetNLabels();
2097 vecContributorTypes.clear();
2098 vecContributorLabels.clear();
2099 for (
Int_t iLabel=0; iLabel<nLabels; iLabel++) {
2101 Int_t label = clus->GetLabels()[iLabel];
2102 if (TMath::Abs(label) > 0) {
2105 vecContributorTypes.push_back(contributorType);
2106 vecContributorLabels.push_back(label);
2111 Int_t nLabelsPhysPrim = vecContributorTypes.size();
2113 if (nLabelsPhysPrim == 1) {
2115 contributorType = vecContributorTypes[0];
2117 if (contributorType ==
kPhoton) {
2120 else if (contributorType ==
kElectron) {
2126 else if (contributorType ==
kProton) {
2135 else if (contributorType ==
kK0L) {
2138 else if (contributorType ==
kNeutron) {
2149 else if (nLabelsPhysPrim == 2) {
2157 Double_t frac1 = clus->GetClusterMCEdepFraction(1);
2165 if (isHadron1 && isHadron2) {
2168 else if (isPhoton1 && isHadron2) {
2172 Double_t photonEnergy = clus->GetNonLinCorrEnergy() * (1 - frac1);
2173 histname =
"ClusterHistogramsMC/hPhotonHadronPhotonEnergy";
2176 else if (isHadron1 && isPhoton2) {
2180 Double_t hadronEnergy = clus->GetNonLinCorrEnergy() * (1 - frac1);
2181 histname =
"ClusterHistogramsMC/hHadronPhotonHadronEnergy";
2184 else if (isPhoton1 && isPhoton2) {
2192 if (part1 && part2) {
2193 Int_t iMother1 = part1->GetMother();
2194 Int_t iMother2 = part2->GetMother();
2195 AliVParticle *mother1 = mcevent->GetTrack(iMother1);
2196 AliVParticle *mother2 = mcevent->GetTrack(iMother2);
2198 if (mother1 && mother2) {
2199 if ( (mother1->PdgCode() == 111) && (mother2->PdgCode() == 111) ) {
2200 if (iMother1 == iMother2) {
2212 else if (nLabelsPhysPrim > 2) {
2218 histname =
"ClusterHistogramsMC/hM02VsParticleTypeCentral";
2219 fHistManager.
FillTH3(histname, clus->GetM02(), clus->GetNonLinCorrEnergy(), particleType);
2222 histname =
"ClusterHistogramsMC/hM02VsParticleTypePeripheral";
2223 fHistManager.
FillTH3(histname, clus->GetM02(), clus->GetNonLinCorrEnergy(), particleType);
2236 const AliVCluster* clus;
2238 for (
const auto jet : jets->
accepted()) {
2243 Double_t hadCaloEnergyUnmatched = 0;
2244 Double_t hadCaloEnergyMatchedNonlincorr = 0;
2245 Double_t hadCaloEnergyMatchedHadCorr = 0;
2248 Int_t nClusters = jet->GetNumberOfClusters();
2249 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
2251 clus = jet->Cluster(iClus);
2255 Int_t label = TMath::Abs(clus->GetLabel());
2261 histname =
"JetPerformanceMC/hM02VsContributorTypeJets";
2262 Double_t x[4] = {clus->GetM02(), clus->GetNonLinCorrEnergy(), contributorType, jetPt};
2268 Bool_t hasMatchedTrack = (clus->GetNTracksMatched() > 0);
2270 if (hasMatchedTrack) {
2271 hadCaloEnergyMatchedNonlincorr += clus->GetNonLinCorrEnergy();
2272 hadCaloEnergyMatchedHadCorr += clus->GetHadCorrEnergy();
2275 hadCaloEnergyUnmatched += clus->GetNonLinCorrEnergy();
2284 histname =
"JetPerformance/hHadCaloEnergyUnmatched";
2288 histname =
"JetPerformance/hHadCaloEnergyMatchedNonlincorr";
2292 histname =
"JetPerformance/hHadCaloEnergyMatchedHadCorr";
2296 histname =
"JetPerformanceMC/hJetComposition";
2297 for (
Int_t type = 0; type < 8; type++) {
2304 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
2306 clus = jet->Cluster(iClus);
2308 Int_t label = TMath::Abs(clus->GetLabel());
2313 if (type == contributorType) {
2315 pTsum += clus->GetNonLinCorrEnergy();
2320 Double_t x[4] = {jetPt, 1.*type, nSum, pTsum};
2340 Double_t phiMinEMCal =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
2341 Double_t phiMaxEMCal =
fGeom->GetEMCALPhiMax() * TMath::DegToRad();
2342 Double_t phiMinDCal =
fGeom->GetDCALPhiMin() * TMath::DegToRad();
2343 Double_t phiMaxDCal =
fGeom->GetDCALPhiMax() * TMath::DegToRad();
2345 Double_t accTPC = 2 * etaTPC * 2 * TMath::Pi();
2346 Double_t accEMCal = 2 * etaEMCal * (phiMaxEMCal - phiMinEMCal);
2347 Double_t accDCal = 2 * (etaEMCal - etaMinDCal) * (phiMaxDCal - phiMinDCal);
2352 while ((jetCont = static_cast<AliJetContainer*>(nextJetColl()))) {
2356 Int_t maxJetIds[] = {-1, -1};
2357 Float_t maxJetPts[] = { 0, 0};
2364 if (jet->
Pt() > maxJetPts[0]) {
2365 maxJetPts[1] = maxJetPts[0];
2366 maxJetIds[1] = maxJetIds[0];
2367 maxJetPts[0] = jet->
Pt();
2370 else if (jet->
Pt() > maxJetPts[1]) {
2371 maxJetPts[1] = jet->
Pt();
2377 TRandom3* r =
new TRandom3(0);
2379 Double_t etaEMCalfid = etaEMCal - jetR;
2380 Double_t etaMinDCalfid = etaMinDCal + jetR;
2381 Double_t phiMinEMCalfid = phiMinEMCal + jetR;
2382 Double_t phiMaxEMCalfid = phiMaxEMCal - jetR;
2383 Double_t phiMinDCalfid = phiMinDCal + jetR;
2384 Double_t phiMaxDCalfid = phiMaxDCal - jetR;
2385 Double_t accEMCalfid = 2 * etaEMCalfid * (phiMaxEMCalfid - phiMinEMCalfid);
2386 Double_t accDCalfid = 2 * (etaEMCalfid - etaMinDCalfid) * (phiMaxDCalfid - phiMinDCalfid);
2387 if ( (etaEMCalfid - etaMinDCalfid) < 0) {
2392 Double_t etaEMCalRC = r->Uniform(-etaEMCalfid, etaEMCalfid);
2393 Double_t phiEMCalRC = r->Uniform(phiMinEMCalfid, phiMaxEMCalfid);
2396 Double_t etaDCalRC = r->Uniform(etaMinDCalfid, etaEMCalfid);
2397 Double_t sign = r->Uniform(-1., 1.);
2399 etaDCalRC = -1*etaDCalRC;
2401 Double_t phiDCalRC = r->Uniform(phiMinDCalfid, phiMaxDCalfid);
2423 AliVParticle* track;
2430 while ((partCont = static_cast<AliParticleContainer*>(nextPartCont()))) {
2433 if (!partContName.CompareTo(
"tracks") || !partContName.CompareTo(
"thermalparticles")) {
2437 trackVec = trackIterator.first;
2438 trackEta = trackVec.Eta();
2440 trackPt = trackVec.Pt();
2442 track = trackIterator.second;
2443 TClonesArray* fTracksContArray = partCont->
GetArray();
2444 trackID = fTracksContArray->IndexOf(track);
2447 if (TMath::Abs(trackEta) < etaTPC) {
2448 trackPtSumTPC += trackPt;
2452 if (TMath::Abs(trackEta) < etaEMCal && trackPhi > phiMinEMCal && trackPhi < phiMaxEMCal) {
2453 trackPtSumEMCal += trackPt;
2457 if (TMath::Abs(trackEta) < etaEMCalfid && trackPhi > phiMinEMCalfid && trackPhi < phiMaxEMCalfid) {
2458 trackPtSumEMCalfid += trackPt;
2463 if (TMath::Abs(trackEta) > etaMinDCal && TMath::Abs(trackEta) < etaEMCal && trackPhi > phiMinDCal && trackPhi < phiMaxDCal) {
2464 trackPtSumDCal += trackPt;
2470 if (TMath::Abs(trackEta) > etaMinDCalfid && TMath::Abs(trackEta) < etaEMCalfid && trackPhi > phiMinDCalfid && trackPhi < phiMaxDCalfid) {
2471 trackPtSumDCalfid += trackPt;
2476 deltaR =
GetDeltaR(&trackVec, etaEMCalRC, phiEMCalRC);
2477 if (deltaR < jetR) {
2478 trackPtSumEMCalRC += trackPt;
2489 deltaR =
GetDeltaR(&trackVec, etaDCalRC, phiDCalRC);
2490 if (deltaR < jetR) {
2491 trackPtSumDCalRC += trackPt;
2501 if (!jetContName.Contains(
"Charged")) {
2512 clusVec = clusIterator.first;
2513 clusEta = clusVec.Eta();
2515 clusPt = clusVec.Pt();
2516 clus = clusIterator.second;
2517 TClonesArray* fClusContArray = clusCont->
GetArray();
2518 clusID = fClusContArray->IndexOf(clus);
2521 if (TMath::Abs(clusEta) < etaEMCal && clusPhi > phiMinEMCal && clusPhi < phiMaxEMCal) {
2522 clusPtSumEMCal += clusPt;
2526 if (TMath::Abs(clusEta) < etaEMCalfid && clusPhi > phiMinEMCalfid && clusPhi < phiMaxEMCalfid) {
2527 clusPtSumEMCalfid += clusPt;
2532 if (TMath::Abs(clusEta) > etaMinDCal && TMath::Abs(clusEta) < etaEMCal && clusPhi > phiMinDCal && clusPhi < phiMaxDCal) {
2533 clusPtSumDCal += clusPt;
2539 if (TMath::Abs(clusEta) > etaMinDCalfid && TMath::Abs(clusEta) < etaEMCalfid && clusPhi > phiMinDCalfid && clusPhi < phiMaxDCalfid) {
2540 clusPtSumDCalfid += clusPt;
2545 deltaR =
GetDeltaR(&clusVec, etaEMCalRC, phiEMCalRC);
2546 if (deltaR < jetR) {
2547 clusPtSumEMCalRC += clusPt;
2557 deltaR =
GetDeltaR(&clusVec, etaDCalRC, phiDCalRC);
2558 if (deltaR < jetR) {
2559 clusPtSumDCalRC += clusPt;
2567 Double_t numerator = (trackPtSumEMCal + clusPtSumEMCal) / accEMCal;
2568 Double_t denominator = trackPtSumTPC / accTPC;
2569 Double_t scaleFactor = numerator / denominator;
2570 TString histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jetCont->
GetArrayName().Data());
2574 if (accEMCalfid > 1e-3) {
2575 numerator = (trackPtSumEMCalfid + clusPtSumEMCalfid) / accEMCalfid;
2576 scaleFactor = numerator / denominator;
2577 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCalFid", jetCont->
GetArrayName().Data());
2583 numerator = (trackPtSumDCal + clusPtSumDCal) / accDCal;
2584 scaleFactor = numerator / denominator;
2585 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCal", jetCont->
GetArrayName().Data());
2591 if (accDCalfid > 1e-3) {
2592 numerator = (trackPtSumDCalfid + clusPtSumDCalfid) / accDCalfid;
2593 scaleFactor = numerator / denominator;
2594 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCalFid", jetCont->
GetArrayName().Data());
2602 Double_t deltaPt = trackPtSumEMCalRC - rho * TMath::Pi() * jetR * jetR;
2604 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCalCharged", jetCont->
GetArrayName().Data());
2609 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCalChargedExcl", jetCont->
GetArrayName().Data());
2613 deltaPt += clusPtSumEMCalRC;
2614 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jetCont->
GetArrayName().Data());
2619 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCalExcl", jetCont->
GetArrayName().Data());
2624 if (accDCalfid > 1e-3) {
2625 deltaPt = trackPtSumDCalRC + clusPtSumDCalRC - rho * TMath::Pi() * jetR * jetR;
2626 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtDCal", jetCont->
GetArrayName().Data());
2646 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
2653 histname = TString::Format(
"%s/TriggerSimHistograms/hRhoVsCent", jets->
GetArrayName().Data());
2657 for (
auto jet : jets->
all()) {
2663 histname = TString::Format(
"%s/TriggerSimHistograms/hAreaVsPt", jets->
GetArrayName().Data());
2664 fHistManager.
FillTH2(histname.Data(), corrPt, 1.0*jet->Area()/(1.0*TMath::Pi()*pow(jetR,2)));
2667 UInt_t rejectionReason = 0;
2668 if (!jets->
AcceptJet(jet, rejectionReason)) {
2669 histname = TString::Format(
"%s/TriggerSimHistograms/hJetRejectionReason", jets->
GetArrayName().Data());
2684 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtEMCal", jets->
GetArrayName().Data());
2686 else if (type ==
kDCal) {
2687 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtDCal", jets->
GetArrayName().Data());
2692 histname = TString::Format(
"%s/TriggerSimHistograms/hPtLeadingVsPt", jets->
GetArrayName().Data());
2697 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtEMCal", jets->
GetArrayName().Data());
2699 else if (type ==
kDCal) {
2700 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtDCal", jets->
GetArrayName().Data());
2702 TLorentzVector leadPart;
2705 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
2710 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtEMCal", jets->
GetArrayName().Data());
2712 else if (type ==
kDCal) {
2713 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtDCal", jets->
GetArrayName().Data());
2715 const AliVTrack* track;
2716 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
2717 track =
static_cast<AliVTrack*
>(jet->Track(i));
2718 z = track->Pt() / TMath::Abs(corrPt);
2724 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtEMCal", jets->
GetArrayName().Data());
2726 else if (type ==
kDCal) {
2727 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtDCal", jets->
GetArrayName().Data());
2787 if (!matchedPartLevelJet) {
2790 Float_t truthPt = matchedPartLevelJet->
Pt();
2804 histname =
"MatchedJetHistograms/hResponseMatrixEMCalDiff";
2809 Double_t x[6] = {truthPt, detPt, matchDistance, sharedFraction, angularity,
fCent};
2815 histname =
"MatchedJetHistograms/hResponseMatrixEMCal";
2817 else if (type ==
kDCal) {
2818 histname =
"MatchedJetHistograms/hResponseMatrixDCal";
2830 histname =
"MatchedJetHistograms/hJESshiftEMCal";
2832 else if (type ==
kDCal) {
2833 histname =
"MatchedJetHistograms/hJESshiftDCal";
2840 histname =
"MatchedJetHistograms/hNEFVsPt";
2849 histname =
"MatchedJetHistograms/hZLeadingVsPt";
2850 TLorentzVector leadPart;
2853 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
2871 for (
auto jet1 : jetCont1->
all()) {
2872 jet1->ResetMatching();
2874 for (
auto jet2 : jetCont2->
all()) {
2875 jet2->ResetMatching();
2878 for (
auto jet1 : jetCont1->
accepted()) {
2882 if (bUseJetCont2Acceptance) {
2883 for (
auto jet2 : jetCont2->
accepted()) {
2888 for (
auto jet2 : jetCont2->
all()) {
2906 if (deltaR < jet1->ClosestJetDistance()) {
2910 if (deltaR < jet2->ClosestJetDistance()) {
2929 TString histNameQA =
"MatchedJetHistograms/fHistJetMatchingQA";
2934 bool returnValue =
false;
2942 returnValue =
false;
2949 TString histname =
"MatchedJetHistograms/hMatchingDistance";
2953 histname =
"MatchedJetHistograms/hJESshiftEMCal";
2961 returnValue =
false;
2968 if (returnValue ==
true) {
2974 returnValue =
false;
2978 return partLevelJet;
2985 bool returnValue =
false;
2996 returnValue =
false;
3005 if (!partLevelJet) {
3006 returnValue =
false;
3015 returnValue =
false;
3025 returnValue =
false;
3033 if (returnValue ==
true) {
3038 TString histname =
"MatchedJetHistograms/hMatchingDistanceVsMCFraction";
3044 returnValue =
false;
3048 return partLevelJet;
3065 AliVParticle *vp1 = 0x0;
3069 vp1 =
static_cast<AliVParticle*
>(jet->
Track(i));
3072 Printf(
"AliVParticle associated to constituent not found");
3077 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
3079 num=num+vp1->Pt()*dr;
3082 if (den>0) angularity=num/den;
3091 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
3092 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
3093 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
3094 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
3095 double dphi = mphi-vphi;
3096 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
3097 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
3110 TString histname =
"ClusterHistogramsMC/hClusterRejectionReasonMC";
3111 UInt_t rejectionReason = 0;
3114 return contributorType;
3117 if (part->GetGeneratorIndex() == 0) {
3125 else if (TMath::Abs(pdg) == 211) {
3128 else if (pdg == 2212) {
3131 else if (pdg == -2212) {
3134 else if (TMath::Abs(pdg) == 321) {
3137 else if (pdg == 130) {
3138 contributorType =
kK0L;
3140 else if (pdg == 2112) {
3143 else if (pdg == -2112) {
3146 else if (TMath::Abs(pdg) == 11) {
3149 else if (TMath::Abs(pdg) == 13) {
3150 contributorType =
kMuon;
3153 contributorType =
kOther;
3157 return contributorType;
3166 Double_t deltaEta = TMath::Abs(part->Eta() - etaRef);
3167 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
3213 for (
Int_t i=0; i<2; i++)
3215 if(maxJetIds[i]==-1)
continue;
3217 Int_t ClusterConstituentID=-1;
3218 Int_t TrackConstituentID =-1;
3228 if(ClusterConstituentID>-1 || TrackConstituentID>-1)
3239 const char *ntracks,
3240 const char *nclusters,
3241 const char *nGenLev,
3251 ::Error(
"AddTaskEmcalJetPerformance",
"No analysis manager to connect to.");
3257 AliVEventHandler* handler = mgr->GetInputEventHandler();
3260 ::Error(
"AddTaskEmcalJetPerformance",
"This task requires an input event handler");
3272 if (handler->InheritsFrom(
"AliESDInputHandler")) {
3275 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
3286 if (trackName ==
"usedefault") {
3287 if (dataType ==
kESD) {
3288 trackName =
"Tracks";
3290 else if (dataType == kAOD) {
3291 trackName =
"tracks";
3298 if (clusName ==
"usedefault") {
3299 if (dataType ==
kESD) {
3300 clusName =
"CaloClusters";
3302 else if (dataType == kAOD) {
3303 clusName =
"caloClusters";
3310 TString name(
"AliAnalysisTaskEmcalJetPerformance");
3311 if (!trackName.IsNull()) {
3315 if (!clusName.IsNull()) {
3319 if (strcmp(suffix,
"") != 0) {
3332 if (trackName ==
"mcparticles") {
3334 partCont = mcpartCont;
3336 else if (trackName ==
"tracks" || trackName ==
"Tracks") {
3338 partCont = trackCont;
3344 if (nGenLev && strcmp(nGenLev,
"")!=0) {
3352 if (!clusName.IsNull()) {
3366 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
3368 contname +=
"_histos";
3369 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
3370 TList::Class(),AliAnalysisManager::kOutputContainer,
3371 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
3372 mgr->ConnectInput (task, 0, cinput1 );
3373 mgr->ConnectOutput (task, 1, coutput1 );
TObjArray fClusterCollArray
cluster collection array
void SetParticlePtCut(Double_t cut)
Double_t GetRhoVal() const
const TString & GetRhoName() const
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t ClosestJetDistance() const
UInt_t fOffTrigger
offline trigger for event selection
void AdoptParticleContainer(AliParticleContainer *cont)
const AliClusterIterableMomentumContainer accepted_momentum() const
const AliMCParticleIterableMomentumContainer 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.
Declaration of class AliTLorentzVector.
static AliEmcalDownscaleFactorsOCDB * Instance()
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.
AliVParticle * Track(Int_t idx) const
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
static UShort_t GetRejectionReasonBitPosition(UInt_t rejectionReason)
Returns the highest bit in the rejection map as reason why the object was rejected.
Double_t GetDownscaleFactorForTriggerClass(const TString &trigger) const
Container for particles within the EMCAL framework.
void SetCaloTriggerPatchInfoName(const char *n)
Int_t ContainsCluster(AliVCluster *cluster, TClonesArray *clusters) const
UShort_t GetNumberOfTracks() const
void AdoptClusterContainer(AliClusterContainer *cont)
TObjArray fParticleCollArray
particle/track collection array
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 SetRun(int runnumber)
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.
BeamType fForceBeamType
forced beam type
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
Base class for container structures within the EMCAL framework.
Int_t ContainsTrack(AliVParticle *track, TClonesArray *tracks) const
Double_t fCent
!event centrality
TClonesArray * GetArray() const
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
Double_t DeltaR(const AliVParticle *part) const
AliVCaloCells * fCaloCells
!cells
AliRhoParameter * GetRhoParameter()
const TString & GetArrayName() const
void RecordEmbeddedEventProperties()
const char * GetName() const
virtual Bool_t IsEventSelected()
Performing event selection.
static Double_t * GenerateFixedBinArray(Int_t n, Double_t min, Double_t max)
std::vector< TString > GetTriggerClasses() const
Float_t GetJetRadius() const
AliEmcalList * fOutput
!output list
Handler for downscale factors for various triggers obtained from the OCDB.
void SetClosestJet(AliEmcalJet *j, Double_t d)
AliMCParticleContainer * GetMCParticleContainer(Int_t i=0) const
const AliParticleIterableMomentumContainer accepted_momentum() const
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.
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
Int_t GetRunNumber(TString)
void SetClusPtCut(Double_t cut)
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
Main initialization function on the worker.
void SetJetAcceptanceType(UInt_t type)
const AliJetIterableContainer accepted() const
EDataType_t
Switch for the data type.
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.
DCal fiducial acceptance (each eta, phi edge narrowed by jet R)
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
EMCal fiducial acceptance (each eta, phi edge narrowed by jet R)
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.
AliEmcalJet * GetJet(Int_t i) const
const AliJetIterableContainer all() const
static const AliAnalysisTaskEmcalEmbeddingHelper * GetInstance()