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"
70 fPlotJetHistograms(kFALSE),
71 fPlotClusterHistograms(kFALSE),
72 fPlotParticleCompositionHistograms(kFALSE),
73 fComputeBackground(kFALSE),
74 fDoTriggerSimulation(kFALSE),
75 fPlotMatchedJetHistograms(kFALSE),
76 fComputeMBDownscaling(kFALSE),
88 fTrackMatchingDeltaEtaMax(0.015),
89 fTrackMatchingDeltaPhiMax(0.030),
95 fUseAliEventCuts(kTRUE),
98 fUseManualEventCuts(kFALSE),
112 fPlotJetHistograms(kFALSE),
113 fPlotClusterHistograms(kFALSE),
114 fPlotParticleCompositionHistograms(kFALSE),
115 fComputeBackground(kFALSE),
116 fDoTriggerSimulation(kFALSE),
117 fPlotMatchedJetHistograms(kFALSE),
118 fComputeMBDownscaling(kFALSE),
130 fTrackMatchingDeltaEtaMax(0.015),
131 fTrackMatchingDeltaPhiMax(0.030),
132 fMBUpscaleFactor(1.),
137 fUseAliEventCuts(kTRUE),
140 fUseManualEventCuts(kFALSE),
242 if (embeddingHelper) {
251 while ((obj = next())) {
271 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
274 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
275 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
281 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
282 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
291 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
292 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
293 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
295 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
296 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
297 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
301 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->GetArrayName().Data());
302 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});type";
303 fHistManager.
CreateTH3(histname.Data(), title.Data(), 20, 0, 100,
nPtBins, 0,
fMaxPt, 2, -0.5, 1.5,
"s");
307 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
308 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
312 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
313 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}";
317 nbinsx = 20; minx = 0; maxx = 100;
319 nbinsz = 50; minz = 0; maxz = 1.;
321 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
322 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
323 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
325 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
326 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
327 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
330 nbinsx = 20; minx = 0; maxx = 100;
332 nbinsz = 50; minz = 0; maxz = 1.;
334 histname = TString::Format(
"%s/JetHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
335 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
336 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
338 histname = TString::Format(
"%s/JetHistograms/hZVsPtDCal", jets->GetArrayName().Data());
339 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
340 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
343 nbinsx = 20; minx = 0; maxx = 100;
345 nbinsz = 50; minz = 0; maxz =
fMaxPt;
347 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
348 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
349 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
351 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
352 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
353 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
356 nbinsx = 20; minx = 0; maxx = 100;
360 histname = TString::Format(
"%s/JetHistograms/hDeltaEHadCorr", jets->GetArrayName().Data());
361 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#sum#it{E}_{nonlincorr} - #it{E}_{hadcorr}";
362 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
366 histname = TString::Format(
"%s/JetHistograms/hMedPatchJet", jets->GetArrayName().Data());
367 title = histname +
";#it{E}_{patch,med};type;#it{p}_{T}^{corr} (GeV/#it{c});Centrality (%)";
378 histname =
"Trigger/hMBDownscaleFactor";
379 title = histname +
";Downscale factor;counts";
393 const Int_t nRcorrBins = 50;
395 const Int_t nCellBins = 30;
397 const Int_t nMatchedTrackBins = 5;
404 histname =
"ClusterHistograms/hM02";
405 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
409 histname =
"ClusterHistograms/hNcellsM02G04";
410 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); Ncells";
413 histname =
"ClusterHistograms/hNcellsM02L04";
414 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); Ncells";
421 histname =
"ClusterHistograms/hMatchedTrackPt";
422 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
425 histname =
"ClusterHistograms/hMatchedTrackPtM02G04";
426 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
429 histname =
"ClusterHistograms/hMatchedTrackPtM02L04";
430 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); #Sigma#it{p}_{track} (GeV/c)";
434 histname =
"ClusterHistograms/hMatchedTrackN";
435 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
438 histname =
"ClusterHistograms/hMatchedTrackNM02G04";
439 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
442 histname =
"ClusterHistograms/hMatchedTrackNM02L04";
443 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); N_{tracks}";
447 histname =
"ClusterHistograms/hM02Matched";
448 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
452 histname =
"ClusterHistograms/hM02Unmatched";
453 htitle = histname +
";Centrality (%);#it{E}_{clus} (GeV); M02";
460 histname =
"ClusterHistograms/hEoverPM02Central";
461 htitle = histname +
";#it{E}_{clus} (GeV); #it{E}_{clus} / #Sigma#it{p}_{track} (GeV); M02";
464 histname =
"ClusterHistograms/hEoverPM02Peripheral";
465 htitle = histname +
";#it{E}_{clus} (GeV); #it{E}_{clus} / #Sigma#it{p}_{track} (GeV); M02";
472 histname =
"ClusterHistograms/hRcorrVsCent";
473 htitle = histname +
";Centrality (%);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
477 histname =
"ClusterHistograms/hRcorr0-10";
478 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
482 histname =
"ClusterHistograms/hRcorr50-90";
483 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); R_{corr} = #frac{#DeltaE_{clus}}{#Sigmap_{track}}";
487 histname =
"ClusterHistograms/hRcorrClusVsCent";
488 htitle = histname +
";Centrality (%);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
492 histname =
"ClusterHistograms/hRcorrClus0-10";
493 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
497 histname =
"ClusterHistograms/hRcorrClus50-90";
498 htitle = histname +
";#it{E}_{clus} (GeV);#Sigma#it{p}_{track} (GeV); #frac{#DeltaE_{clus}}{E_{clus}}";
512 const Int_t nRejBins = 32;
515 const Int_t nParticleTypes = 8;
518 AliEmcalContainer* cont = 0;
520 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) {
522 histname =
"JetPerformance/hClusterRejectionReasonMC";
523 htitle = histname +
";Rejection reason;#it{E}_{clus} (GeV/)";
529 histname =
"JetPerformance/hM02VsParticleType";
530 htitle = histname +
";M02;#it{E}_{clus} (GeV); Particle type";
544 min[dim] = fM02HistBins[0];
548 title[dim] =
"#it{E}_{clus} (GeV)";
551 min[dim] = fPtHistBins[0];
555 title[dim] =
"Particle type";
556 nbins[dim] = nParticleTypes;
559 binEdges[dim] = particleTypeBins;
562 title[dim] =
"#it{p}_{T,jet}^{corr}";
569 TString thnname =
"JetPerformance/hM02VsParticleTypeJets";
571 for (
Int_t i = 0; i < dim; i++) {
572 hn->GetAxis(i)->SetTitle(title[i]);
573 hn->SetBinEdges(i, binEdges[i]);
580 title[dim] =
"#it{p}_{T,jet}^{corr}";
587 title[dim] =
"Particle type";
588 nbins[dim] = nParticleTypes;
591 binEdges[dim] = particleTypeBins;
601 title[dim] =
"#it{p}_{T,sum} (GeV)";
604 min[dim] = fPtHistBins[0];
608 thnname =
"JetPerformance/hJetComposition";
610 for (
Int_t i = 0; i < dim; i++) {
611 thn->GetAxis(i)->SetTitle(title[i]);
612 thn->SetBinEdges(i, binEdges[i]);
618 histname =
"JetPerformance/hHadCaloEnergyUnmatched";
619 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
623 histname =
"JetPerformance/hHadCaloEnergyMatchedNonlincorr";
624 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
628 histname =
"JetPerformance/hHadCaloEnergyMatchedHadCorr";
629 htitle = histname +
";#it{p}_{T,jet} (GeV);#it{p}_{T,had} (GeV)";
645 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
647 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jets->GetArrayName().Data());
648 title = histname +
";Centrality;Scale factor;counts";
651 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jets->GetArrayName().Data());
652 title = histname +
";Centrality (%);#delta#it{p}_{T} (GeV/#it{c});counts";
672 histname =
"TriggerSimHistograms/hEtaVsPhi";
673 title = histname +
";#eta_{patch} (rad);#phi_{patch} (rad)";
677 histname =
"TriggerSimHistograms/hNPatches";
678 title = histname +
";#it{N}_{patches};type";
682 histname =
"TriggerSimHistograms/hPatchE";
683 title = histname +
";Centrality (%);#it{E}_{patch} (GeV)";
687 histname =
"TriggerSimHistograms/hPatchMedianE";
688 title = histname +
";Centrality (%);#it{E}_{patch,med} (GeV);type";
689 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, 0, 100, 100, 0, 50, 2, -0.5, 1.5);
695 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
698 histname = TString::Format(
"%s/TriggerSimHistograms/hJetRejectionReason", jets->GetArrayName().Data());
699 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
705 histname = TString::Format(
"%s/TriggerSimHistograms/hRhoVsCent", jets->GetArrayName().Data());
706 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
715 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
716 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
717 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
719 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
720 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});NEF";
721 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
724 histname = TString::Format(
"%s/TriggerSimHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
725 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
729 histname = TString::Format(
"%s/TriggerSimHistograms/hAreaVsPt", jets->GetArrayName().Data());
730 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}";
734 nbinsx = 20; minx = 0; maxx = 100;
736 nbinsz = 50; minz = 0; maxz = 1.;
738 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
739 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
740 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
742 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
743 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
744 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
747 nbinsx = 20; minx = 0; maxx = 100;
749 nbinsz = 50; minz = 0; maxz = 1.;
751 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
752 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
753 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
755 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtDCal", jets->GetArrayName().Data());
756 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
757 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
760 nbinsx = 20; minx = 0; maxx = 100;
762 nbinsz = 50; minz = 0; maxz =
fMaxPt;
764 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
765 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
766 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
768 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
769 title = histname +
";Centrality (%);#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
770 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
790 histname =
"MatchedJetHistograms/hResponseMatrixEMCal";
791 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
792 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
794 histname =
"MatchedJetHistograms/hResponseMatrixDCal";
795 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#it{p}_{T,corr}^{det} (GeV/#it{c})";
796 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
799 nbinsx = 20; minx = 0; maxx = 100;
801 nbinsz = 250; minz = -5.; maxz = 5.;
803 histname =
"MatchedJetHistograms/hJESshiftEMCal";
804 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
805 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
807 histname =
"MatchedJetHistograms/hJESshiftDCal";
808 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});#frac{#it{p}_{T,corr}^{det} - #it{p}_{T}^{truth}}{#it{p}_{T}^{truth}}";
809 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
812 nbinsx = 20; minx = 0; maxx = 100;
814 nbinsz = 50; minz = 0; maxz = 1.;
816 histname =
"MatchedJetHistograms/hNEFVsPt";
817 title = histname +
";Centrality (%);#it{p}_{T,corr}^{det} (GeV/#it{c});Calo energy fraction";
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 = 1.;
825 histname =
"MatchedJetHistograms/hZLeadingVsPt";
826 title = histname +
";Centrality (%);#it{p}_{T,corr}^{det} (GeV/#it{c});#it{z}_{leading}";
827 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
830 nbinsx = 20; minx = 0; maxx = 100;
832 nbinsz = 50; minz = 0; maxz = 1.;
834 histname =
"MatchedJetHistograms/hMatchingDistance";
835 title = histname +
";Centrality (%);#it{p}_{T}^{truth} (GeV/#it{c});R";
836 fHistManager.
CreateTH3(histname.Data(), title.Data(),
nbinsx, minx, maxx,
nbinsy, miny, maxy, nbinsz, minz, maxz);
861 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
862 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",
863 GetName(), cls.GetName(),
"EmcalTriggers"));
868 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
888 TString triggerNameMB1 =
"CINT7-B-NOPF-CENT";
889 TString triggerNameMB2 =
"CV0L7-B-NOPF-CENT";
890 TString triggerNameJE =
"CINT7EJ1-B-NOPF-CENTNOPMD";
895 for (
auto i : runtriggers) {
896 if (i.EqualTo(triggerNameMB1) || i.EqualTo(triggerNameMB2)) {
905 TString histname =
"Trigger/hMBDownscaleFactor";
942 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
943 TString jetContName = jetCont->GetName();
979 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
980 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",
981 GetName(), cls.GetName(),
"EmcalTriggers"));
986 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
991 std::vector<Double_t> vecEMCal;
992 std::vector<Double_t> vecDCal;
994 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
997 if(!recpatch->IsJetHighSimple())
continue;
999 histname =
"TriggerSimHistograms/hEtaVsPhi";
1002 histname =
"TriggerSimHistograms/hPatchE";
1005 if (recpatch->IsEMCal()) {
1006 vecEMCal.push_back(recpatch->GetPatchE());
1008 vecDCal.push_back(recpatch->GetPatchE());
1015 const Int_t nBkgPatchesEMCal = vecEMCal.size();
1016 const Int_t nBkgPatchesDCal = vecDCal.size();
1017 fMedianEMCal = TMath::Median(nBkgPatchesEMCal, &vecEMCal[0]);
1018 fMedianDCal = TMath::Median(nBkgPatchesDCal, &vecDCal[0]);
1020 histname =
"TriggerSimHistograms/hPatchMedianE";
1024 histname =
"TriggerSimHistograms/hNPatches";
1032 for(
auto p : *fTriggerPatchInfo){
1033 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
1036 if(!recpatch->IsJetHighSimple())
continue;
1038 if (recpatch->IsEMCal()) {
1039 if ((recpatch->GetPatchE() -
fMedianDCal) > threshold) {
1044 if ((recpatch->GetPatchE() -
fMedianEMCal) > threshold) {
1092 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1093 TString jetContName = jets->GetName();
1098 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
1102 for (
auto jet : jets->
all()) {
1108 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
1113 UInt_t rejectionReason = 0;
1114 if (!jets->
AcceptJet(jet, rejectionReason)) {
1115 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
1116 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1128 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
1130 else if (type ==
kDCal) {
1131 histname = TString::Format(
"%s/JetHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
1137 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->GetArrayName().Data());
1142 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
1147 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
1149 else if (type ==
kDCal) {
1150 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
1152 TLorentzVector leadPart;
1155 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1160 histname = TString::Format(
"%s/JetHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
1162 else if (type ==
kDCal) {
1163 histname = TString::Format(
"%s/JetHistograms/hZVsPtDCal", jets->GetArrayName().Data());
1165 const AliVTrack* track;
1166 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
1167 track =
static_cast<AliVTrack*
>(jet->Track(i));
1168 z = track->Pt() / TMath::Abs(corrPt);
1174 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
1176 else if (type ==
kDCal) {
1177 histname = TString::Format(
"%s/JetHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
1183 const AliVCluster* clus =
nullptr;
1184 Int_t nClusters = jet->GetNumberOfClusters();
1185 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1186 clus = jet->Cluster(iClus);
1187 deltaEhadcorr += (clus->GetNonLinCorrEnergy() - clus->GetHadCorrEnergy());
1190 histname = TString::Format(
"%s/JetHistograms/hDeltaEHadCorr", jets->GetArrayName().Data());
1196 histname = TString::Format(
"%s/JetHistograms/hMedPatchJet", jets->GetArrayName().Data());
1217 const AliVCluster* clus;
1221 Double_t clusPhi = it.first.Phi_0_2pi();
1225 if (!clus->IsEMCAL()) {
1231 Int_t nTracksMatched = 0;
1232 const AliVTrack* track =
nullptr;
1233 for (
Int_t itrack=0; itrack < clus->GetNTracksMatched(); itrack++) {
1234 track =
dynamic_cast<AliVTrack*
>(clus->GetTrackMatched(itrack));
1239 Double_t trackPhi = TVector2::Phi_0_2pi(track->GetTrackPhiOnEMCal());
1240 Double_t trackEta = track->GetTrackEtaOnEMCal();
1241 Double_t deta = TMath::Abs(clusPhi - trackPhi);
1242 Double_t dphi = TMath::Abs(clusEta - trackEta);
1245 trackPSum += track->P();
1251 if (trackPSum > 1e-3) {
1252 EoverP = clus->GetNonLinCorrEnergy() / trackPSum;
1255 Double_t deltaE = clus->GetNonLinCorrEnergy() - clus->GetHadCorrEnergy();
1257 if (trackPSum > 1e-3) {
1258 Rcorr = deltaE / trackPSum;
1260 Double_t RcorrClus = deltaE / clus->GetNonLinCorrEnergy();
1266 histname =
"ClusterHistograms/hM02";
1270 if (clus->GetM02() > 0.4) {
1271 histname =
"ClusterHistograms/hNcellsM02G04";
1274 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1275 histname =
"ClusterHistograms/hNcellsM02L04";
1283 histname =
"ClusterHistograms/hMatchedTrackPt";
1286 if (clus->GetM02() > 0.4) {
1287 histname =
"ClusterHistograms/hMatchedTrackPtM02G04";
1290 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1291 histname =
"ClusterHistograms/hMatchedTrackPtM02L04";
1296 histname =
"ClusterHistograms/hMatchedTrackN";
1299 if (clus->GetM02() > 0.4) {
1300 histname =
"ClusterHistograms/hMatchedTrackNM02G04";
1303 if (clus->GetM02() > 0.1 && clus->GetM02() < 0.4) {
1304 histname =
"ClusterHistograms/hMatchedTrackNM02L04";
1309 histname =
"ClusterHistograms/hM02Matched";
1310 if (nTracksMatched > 0) {
1315 histname =
"ClusterHistograms/hM02Unmatched";
1316 if (nTracksMatched == 0) {
1325 histname =
"ClusterHistograms/hEoverPM02Central";
1329 histname =
"ClusterHistograms/hEoverPM02Peripheral";
1337 histname =
"ClusterHistograms/hRcorrVsCent";
1342 histname =
"ClusterHistograms/hRcorr0-10";
1348 histname =
"ClusterHistograms/hRcorr50-90";
1353 histname =
"ClusterHistograms/hRcorrClusVsCent";
1358 histname =
"ClusterHistograms/hRcorrClus0-10";
1364 histname =
"ClusterHistograms/hRcorrClus50-90";
1380 const AliMCEvent* mcevent =
nullptr;
1382 mcevent = MCEvent();
1390 const AliVCluster* clus;
1396 if (!clus->IsEMCAL()) {
1407 Int_t label = TMath::Abs(clus->GetLabel());
1416 histname =
"JetPerformance/hM02VsParticleType";
1417 fHistManager.
FillTH3(histname, clus->GetM02(), clus->GetNonLinCorrEnergy(), particleType1);
1423 for (
const auto jet : jets->
accepted()) {
1428 Double_t hadCaloEnergyUnmatched = 0;
1429 Double_t hadCaloEnergyMatchedNonlincorr = 0;
1430 Double_t hadCaloEnergyMatchedHadCorr = 0;
1433 Int_t nClusters = jet->GetNumberOfClusters();
1434 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1436 clus = jet->Cluster(iClus);
1440 Int_t label = TMath::Abs(clus->GetLabel());
1446 histname =
"JetPerformance/hM02VsParticleTypeJets";
1447 Double_t x[4] = {clus->GetM02(), clus->GetNonLinCorrEnergy(), particleType1, jetPt};
1451 if (particleType1 ==
kHadron) {
1452 Bool_t hasMatchedTrack = (clus->GetNTracksMatched() > 0);
1454 if (hasMatchedTrack) {
1455 hadCaloEnergyMatchedNonlincorr += clus->GetNonLinCorrEnergy();
1456 hadCaloEnergyMatchedHadCorr += clus->GetHadCorrEnergy();
1459 hadCaloEnergyUnmatched += clus->GetNonLinCorrEnergy();
1468 histname =
"JetPerformance/hHadCaloEnergyUnmatched";
1472 histname =
"JetPerformance/hHadCaloEnergyMatchedNonlincorr";
1476 histname =
"JetPerformance/hHadCaloEnergyMatchedHadCorr";
1480 histname =
"JetPerformance/hJetComposition";
1481 for (
Int_t type = 0; type < 8; type++) {
1488 for (
Int_t iClus = 0; iClus < nClusters; iClus++) {
1490 clus = jet->Cluster(iClus);
1492 Int_t label = TMath::Abs(clus->GetLabel());
1497 if (type == particleType1) {
1499 pTsum += clus->GetNonLinCorrEnergy();
1504 Double_t x[4] = {jetPt, 1.*type, nSum, pTsum};
1524 Double_t phiMinEMCal =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
1525 Double_t phiMaxEMCal =
fGeom->GetEMCALPhiMax() * TMath::DegToRad();
1529 Double_t accTPC = 2 * etaTPC * 2 * TMath::Pi();
1530 Double_t accEMCal = 2 * etaEMCal * (phiMaxEMCal - phiMinEMCal);
1536 while ((jetCont = static_cast<AliJetContainer*>(nextJetColl()))) {
1539 TRandom3* r =
new TRandom3(0);
1540 Double_t jetR = jetCont->GetJetRadius();
1541 Double_t etaEMCalfid = etaEMCal - jetR;
1542 Double_t phiMinEMCalfid = phiMinEMCal + jetR;
1543 Double_t phiMaxEMCalfid = phiMaxEMCal - jetR;
1546 Double_t etaEMCalRC = r->Uniform(-etaEMCalfid, etaEMCalfid);
1547 Double_t phiEMCalRC = r->Uniform(phiMinEMCalfid, phiMaxEMCalfid);
1557 std::vector<std::vector<Double_t>> trackPtSumDCalRC(
fNEtaBins, std::vector<Double_t>(
fNPhiBins));
1558 std::vector<std::vector<Double_t>> clusESumDCalRC(
fNEtaBins, std::vector<Double_t>(
fNPhiBins));
1571 track = trackIterator.first;
1572 trackEta = track.Eta();
1574 trackPt = track.Pt();
1577 if (TMath::Abs(trackEta) < etaTPC) {
1578 trackPtSumTPC += trackPt;
1582 if (TMath::Abs(trackEta) < etaEMCal && trackPhi > phiMinEMCal && trackPhi < phiMaxEMCal) {
1583 trackPtSumEMCal += trackPt;
1587 deltaR =
GetDeltaR(&track, etaEMCalRC, phiEMCalRC);
1588 if (deltaR < jetR) {
1589 trackPtSumEMCalRC += trackPt;
1604 clus = clusIterator.first;
1605 clusEta = clus.Eta();
1610 if (TMath::Abs(clusEta) < etaEMCal && clusPhi > phiMinEMCal && clusPhi < phiMaxEMCal) {
1611 clusESumEMCal += clusE;
1615 deltaR =
GetDeltaR(&clus, etaEMCalRC, phiEMCalRC);
1616 if (deltaR < jetR) {
1617 clusESumEMCalRC += clusE;
1623 Double_t numerator = (trackPtSumEMCal + clusESumEMCal) / accEMCal;
1624 Double_t denominator = trackPtSumTPC / accTPC;
1625 Double_t scaleFactor = numerator / denominator;
1626 TString histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jetCont->GetArrayName().Data());
1630 Double_t rho = jetCont->GetRhoVal();
1631 Double_t deltaPt = trackPtSumEMCalRC + clusESumEMCalRC - rho * TMath::Pi() * jetR * jetR;
1632 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jetCont->GetArrayName().Data());
1650 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1651 TString jetContName = jets->GetName();
1656 histname = TString::Format(
"%s/TriggerSimHistograms/hRhoVsCent", jets->GetArrayName().Data());
1660 for (
auto jet : jets->
all()) {
1666 histname = TString::Format(
"%s/TriggerSimHistograms/hAreaVsPt", jets->GetArrayName().Data());
1670 UInt_t rejectionReason = 0;
1671 if (!jets->
AcceptJet(jet, rejectionReason)) {
1672 histname = TString::Format(
"%s/TriggerSimHistograms/hJetRejectionReason", jets->GetArrayName().Data());
1673 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1685 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtEMCal", jets->GetArrayName().Data());
1687 else if (type ==
kDCal) {
1688 histname = TString::Format(
"%s/TriggerSimHistograms/hNEFVsPtDCal", jets->GetArrayName().Data());
1693 histname = TString::Format(
"%s/TriggerSimHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
1698 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtEMCal", jets->GetArrayName().Data());
1700 else if (type ==
kDCal) {
1701 histname = TString::Format(
"%s/TriggerSimHistograms/hZLeadingVsPtDCal", jets->GetArrayName().Data());
1703 TLorentzVector leadPart;
1706 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1711 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtEMCal", jets->GetArrayName().Data());
1713 else if (type ==
kDCal) {
1714 histname = TString::Format(
"%s/TriggerSimHistograms/hZVsPtDCal", jets->GetArrayName().Data());
1716 const AliVTrack* track;
1717 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
1718 track =
static_cast<AliVTrack*
>(jet->Track(i));
1719 z = track->Pt() / TMath::Abs(corrPt);
1725 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtEMCal", jets->GetArrayName().Data());
1727 else if (type ==
kDCal) {
1728 histname = TString::Format(
"%s/TriggerSimHistograms/hNConstVsPtDCal", jets->GetArrayName().Data());
1747 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1748 TString jetContName = jets->GetName();
1751 if (jetContName.Contains(
"mcparticles")) {
1760 for (
auto jet : jets->
accepted()) {
1779 histname =
"MatchedJetHistograms/hResponseMatrixEMCal";
1781 else if (type ==
kDCal) {
1782 histname =
"MatchedJetHistograms/hResponseMatrixDCal";
1788 histname =
"MatchedJetHistograms/hJESshiftEMCal";
1790 else if (type ==
kDCal) {
1791 histname =
"MatchedJetHistograms/hJESshiftDCal";
1796 histname =
"MatchedJetHistograms/hNEFVsPt";
1800 histname =
"MatchedJetHistograms/hZLeadingVsPt";
1801 TLorentzVector leadPart;
1804 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1808 histname =
"MatchedJetHistograms/hMatchingDistance";
1823 Int_t tag = mcUtils.
CheckOrigin(clus->GetLabels(), clus->GetNLabels(), mcevent, clusArray);
1843 particleType =
kPi0;
1847 particleType =
kEta;
1849 else if (isPhoton) {
1852 else if (isPion || isKaon || isProton || isAntiProton || isNeutron || isAntiNeutron) {
1855 else if (isElectron) {
1859 particleType =
kMuon;
1864 return particleType;
1877 TString histname = TString::Format(
"%s/hClusterRejectionReasonMC", clusters->GetArrayName().Data());
1878 UInt_t rejectionReason = 0;
1881 return particleType;
1884 if (part->GetGeneratorIndex() == 0) {
1887 Int_t pdg = TMath::Abs(part->PdgCode());
1900 particleType =
kPi0;
1904 particleType =
kEta;
1911 else if (pdg == 211 || 2212 || 321 || 2112) {
1914 else if (pdg == 11) {
1917 else if (pdg == 13) {
1918 particleType =
kMuon;
1925 return particleType;
1934 Double_t deltaEta = TMath::Abs(part->Eta() - etaRef);
1935 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
1969 const char *ntracks,
1970 const char *nclusters,
1971 const char *nGenLev,
1981 ::Error(
"AddTaskEmcalJetPerformance",
"No analysis manager to connect to.");
1987 AliVEventHandler* handler = mgr->GetInputEventHandler();
1990 ::Error(
"AddTaskEmcalJetPerformance",
"This task requires an input event handler");
2002 if (handler->InheritsFrom(
"AliESDInputHandler")) {
2005 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
2016 if (trackName ==
"usedefault") {
2017 if (dataType ==
kESD) {
2018 trackName =
"Tracks";
2020 else if (dataType ==
kAOD) {
2021 trackName =
"tracks";
2028 if (clusName ==
"usedefault") {
2029 if (dataType ==
kESD) {
2030 clusName =
"CaloClusters";
2032 else if (dataType ==
kAOD) {
2033 clusName =
"caloClusters";
2040 TString name(
"AliAnalysisTaskEmcalJetPerformance");
2041 if (!trackName.IsNull()) {
2045 if (!clusName.IsNull()) {
2049 if (strcmp(suffix,
"") != 0) {
2062 if (trackName ==
"mcparticles") {
2064 partCont = mcpartCont;
2066 else if (trackName ==
"tracks" || trackName ==
"Tracks") {
2068 partCont = trackCont;
2074 if (nGenLev && strcmp(nGenLev,
"")!=0) {
2082 if (!clusName.IsNull()) {
2096 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
2098 contname +=
"_histos";
2099 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
2100 TList::Class(),AliAnalysisManager::kOutputContainer,
2101 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
2102 mgr->ConnectInput (task, 0, cinput1 );
2103 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)
Int_t CheckOrigin(Int_t label, const AliMCEvent *mcevent)
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
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 CheckOverlapped2GammaDecay(const Int_t *labels, Int_t nlabels, Int_t mesonIndex, const AliMCEvent *mcevent, Int_t &tag)
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)
Class with analysis utils for simulations.
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
Bool_t CheckTagBit(Int_t tag, UInt_t test) const
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()
static Double_t fgkEMCalDCalPhiDivide
phi value used to distinguish between DCal and EMCal