16 #include <TClonesArray.h>
20 #include <THnSparse.h>
23 #include <AliVCluster.h>
24 #include <AliVParticle.h>
33 #include "AliEMCALGeometry.h"
50 fUseManualEventCuts(kFALSE),
54 fDijetLeadingHadronPt(0),
58 fPlotJetHistograms(kFALSE),
59 fPlotDijetCandHistograms(kFALSE),
60 fPlotDijetImbalanceHistograms(kFALSE),
61 fComputeBackground(kFALSE),
62 fDoMomentumBalance(kFALSE),
63 fDoGeometricalMatching(kFALSE),
65 fTrackConstituentThreshold(0),
66 fClusterConstituentThreshold(0),
84 fUseManualEventCuts(kFALSE),
88 fDijetLeadingHadronPt(0),
92 fPlotJetHistograms(kFALSE),
93 fPlotDijetCandHistograms(kFALSE),
94 fPlotDijetImbalanceHistograms(kFALSE),
95 fComputeBackground(kFALSE),
96 fDoMomentumBalance(kFALSE),
97 fDoGeometricalMatching(kFALSE),
99 fTrackConstituentThreshold(0),
100 fClusterConstituentThreshold(0),
145 while ((obj = next())) {
180 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
183 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
184 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
190 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
191 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
196 histname = TString::Format(
"%s/JetHistograms/hCentVsPt", jets->GetArrayName().Data());
197 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});Centrality (%);counts";
201 histname = TString::Format(
"%s/JetHistograms/hPtVsEtaVsPhi", jets->GetArrayName().Data());
202 title = histname +
";#eta_{jet} (rad);#phi_{jet} (rad);#it{p}_{T}^{corr} (GeV/#it{c})";
203 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, -0.5, 0.5, 101, 0, TMath::Pi() * 2.02,
nPtBins, 0,
fMaxPt);
206 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->GetArrayName().Data());
207 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c})";
211 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
212 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
216 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
217 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}";
221 histname = TString::Format(
"%s/JetHistograms/hNEFVsPt", jets->GetArrayName().Data());
222 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});NEF;";
226 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPt", jets->GetArrayName().Data());
227 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
231 histname = TString::Format(
"%s/JetHistograms/hZVsPt", jets->GetArrayName().Data());
232 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}";
236 histname = TString::Format(
"%s/JetHistograms/hNConstVsPt", jets->GetArrayName().Data());
237 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
243 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jets->GetArrayName().Data());
244 title = histname +
";Centrality;Scale factor;counts";
247 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jets->GetArrayName().Data());
248 title = histname +
";#delta#it{p}_{T} (GeV/#it{c});counts";
251 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCalRegion", jets->GetArrayName().Data());
252 title = histname +
";Centrality;Scale factor;Eta bin";
253 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, 0, 100, 200, 0, 10, 28, -0.5, 27.5);
255 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtDCalRegion", jets->GetArrayName().Data());
256 title = histname +
";#delta#it{p}_{T} (GeV/#it{c});Eta bin;counts";
264 histname =
"Trigger/hMBDownscaleFactor";
265 title = histname +
";Downscale factor;counts";
280 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
289 axisTitle[dim] =
"Centrality (%)";
297 axisTitle[dim] =
"LeadingHadronRequired";
304 axisTitle[dim] =
"#it{p}_{T,trig jet} (GeV/#it{c})";
305 nbins[dim] = TMath::CeilNint(
fMaxPt/2);
311 axisTitle[dim] =
"#it{p}_{T,ass jet} (GeV/#it{c})";
312 nbins[dim] = TMath::CeilNint(
fMaxPt/2);
318 axisTitle[dim] =
"#phi_{trig jet}";
319 nbins[dim] = TMath::CeilNint(
fMaxPt/2);
321 max[dim] = TMath::TwoPi();
325 axisTitle[dim] =
"#phi_{ass jet}";
326 nbins[dim] = TMath::CeilNint(
fMaxPt/2);
328 max[dim] = TMath::TwoPi();
332 axisTitle[dim] =
"#eta_{trig jet}";
333 nbins[dim] = TMath::CeilNint(
fMaxPt/2);
339 axisTitle[dim] =
"#eta_{ass jet}";
340 nbins[dim] = TMath::CeilNint(
fMaxPt/2);
346 TString thnname = TString::Format(
"%s/DijetCandObservables", jets->GetArrayName().Data());
348 for (
Int_t i = 0; i < dim; i++) {
349 hn->GetAxis(i)->SetTitle(axisTitle[i]);
350 hn->SetBinEdges(i, binEdges[i]);
364 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
373 axisTitle[dim] =
"Centrality (%)";
381 axisTitle[dim] =
"#Delta#phi";
388 axisTitle[dim] =
"#Delta#eta";
395 axisTitle[dim] =
"A_{J}";
402 axisTitle[dim] =
"x_{J}";
409 axisTitle[dim] =
"k_{Ty} (GeV)";
416 axisTitle[dim] =
"N_{tracks, trig jet}";
423 axisTitle[dim] =
"N_{tracks, ass jet}";
430 TString thnname = TString::Format(
"%s/DijetImbalanceObservables", jets->GetArrayName().Data());
432 for (
Int_t i = 0; i < dim; i++) {
433 hn->GetAxis(i)->SetTitle(axisTitle[i]);
434 hn->SetBinEdges(i, binEdges[i]);
446 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
456 axisTitle[dim] =
"A_{J}";
463 axisTitle[dim] =
"#Delta#phi";
470 axisTitle[dim] =
"#it{p}_{T,particle} (GeV/#it{c})";
480 max[dim] = pTParticleBins[nbins[dim]];
481 binEdges[dim] = pTParticleBins;
484 axisTitle[dim] =
"#it{p}_{T}#parallel (GeV/#it{c})";
493 max[dim] = pTParallelBins[nbins[dim]];
494 binEdges[dim] = pTParallelBins;
497 TString thnname = TString::Format(
"%s/MomentumBalance", jets->GetArrayName().Data());
499 for (
Int_t i = 0; i < dim; i++) {
500 hn->GetAxis(i)->SetTitle(axisTitle[i]);
501 hn->SetBinEdges(i, binEdges[i]);
520 axisTitle[dim] =
"Centrality (%)";
528 axisTitle[dim] =
"isSwitched";
535 axisTitle[dim] =
"#DeltaR_{trig}";
542 axisTitle[dim] =
"#DeltaR_{ass}";
549 axisTitle[dim] =
"trig #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}";
556 axisTitle[dim] =
"ass #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}";
563 axisTitle[dim] =
"A_{J} low-threshold";
570 axisTitle[dim] =
"A_{J} hard-core";
577 TString thnname =
"GeometricalMatching";
579 for (
Int_t i = 0; i < dim; i++) {
580 hn->GetAxis(i)->SetTitle(axisTitle[i]);
581 hn->SetBinEdges(i, binEdges[i]);
587 histname =
"GeometricalMatchingEfficiency";
588 title = histname +
";isMatched;counts";
623 TString triggerNameMB1 =
"CINT7-B-NOPF-CENT";
624 TString triggerNameMB2 =
"CV0L7-B-NOPF-CENT";
625 TString triggerNameJE =
"CINT7EJ1-B-NOPF-CENTNOPMD";
630 for (
auto i : runtriggers) {
631 if (i.EqualTo(triggerNameMB1) || i.EqualTo(triggerNameMB2)) {
640 TString histname =
"Trigger/hMBDownscaleFactor";
672 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
673 TString jetContName = jetCont->GetName();
674 if (jetContName.Contains(
"HardCore"))
continue;
682 for (
Int_t leadingHadronCutType=0; leadingHadronCutType<2; leadingHadronCutType++) {
685 FindDijet(jetCont, leadingHadronCutType);
689 TString histname = TString::Format(
"%s/DijetCandObservables", jetCont->GetArrayName().Data());
703 TString histname = TString::Format(
"%s/DijetImbalanceObservables", jetCont->GetArrayName().Data());
709 histname = TString::Format(
"%s/MomentumBalance", jetCont->GetArrayName().Data());
758 for(
auto assJetCand : jetCont->
accepted()) {
759 if (!assJetCand)
continue;
761 if ( TMath::Abs(trigJet->
Phi() - assJetCand->Phi()) <
fDeltaPhiMin )
continue;
764 if ( assJetCandPt < assJetPt )
continue;
796 track = trackIterator.second;
806 Double_t deltaPhiTrigJet = TMath::Abs(trackPhi - trigJetPhi);
807 Double_t deltaPhiAssJet = TMath::Abs(trackPhi - assJetPhi);
808 Bool_t isNearside = deltaPhiTrigJet < deltaPhiAssJet;
813 deltaPhi = trackPhi - trigJetPhi;
814 balancePt = trackPt * TMath::Cos(deltaPhi);
817 deltaPhi = trackPhi - assJetPhi;
818 balancePt = -trackPt * TMath::Cos(deltaPhi);
832 TString jetContAllName = Form(
"Jet_AKTFullR0%d0_tracks_pT0150_caloClusters_E0300_pt_scheme", (
int) (
fMatchingJetR*10) );
838 TString jetContHardCoreName = Form(
"JetHardCore_AKTFullR0%d0_tracks_pT%d_caloClusters_E%d_pt_scheme", (
int) (
fMatchingJetR*10), trackThreshold, clusThreshold);
859 for(
auto matchingTrigJetCand : jetCont->
accepted()) {
860 if (!matchingTrigJetCand)
continue;
862 if (matchingTrigJet) {
863 if (
GetJetPt(jetCont, matchingTrigJetCand) <
GetJetPt(jetCont, matchingTrigJet) )
continue;
865 matchingTrigJet = matchingTrigJetCand;
867 if (!matchingTrigJet)
return;
871 for(
auto matchingAssJetCand : jetCont->
accepted()) {
872 if (!matchingAssJetCand)
continue;
874 if (matchingAssJet) {
875 if (
GetJetPt(jetCont, matchingAssJetCand) <
GetJetPt(jetCont, matchingAssJet) )
continue;
877 matchingAssJet = matchingAssJetCand;
881 if (matchingAssJet) {
884 if (
GetJetPt(jetCont, matchingTrigJet) <
GetJetPt(jetCont, matchingAssJet) ) {
925 Double_t phiMinEMCal =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
926 Double_t phiMaxEMCal =
fGeom->GetEMCALPhiMax() * TMath::DegToRad();
927 Double_t phiMinDCal =
fGeom->GetDCALPhiMin() * TMath::DegToRad();
928 Double_t phiMaxDCal =
fGeom->GetDCALPhiMax() * TMath::DegToRad();
929 Double_t phiMinPHOS = 250 * TMath::DegToRad();
930 Double_t phiMaxPHOS = 320 * TMath::DegToRad();
932 Double_t accTPC = 2 * etaTPC * 2 * TMath::Pi();
933 Double_t accEMCal = 2 * etaEMCal * (phiMaxEMCal - phiMinEMCal);
934 Double_t accDCalRegion = 2 * etaEMCal * (phiMaxDCal - phiMinDCal);
937 TRandom3* r =
new TRandom3(0);
939 Double_t etaEMCalfid = etaEMCal - jetR;
940 Double_t phiMinEMCalfid = phiMinEMCal + jetR;
941 Double_t phiMaxEMCalfid = phiMaxEMCal - jetR;
942 Double_t phiMinDCalRegionfid = phiMinDCal + jetR;
943 Double_t phiMaxDCalRegionfid = phiMaxDCal - jetR;
946 Double_t etaEMCalRC = r->Uniform(-etaEMCalfid, etaEMCalfid);
947 Double_t phiEMCalRC = r->Uniform(phiMinEMCalfid, phiMaxEMCalfid);
951 const Int_t nEtaBinsSF = 28;
952 const Int_t nEtaBinsRC = 20;
954 Double_t phiDCalRC = r->Uniform(phiMinDCalRegionfid, phiMaxDCalRegionfid);
958 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
959 etaMin = -etaEMCalfid + bin*etaStep;
960 etaMax = etaMin + etaStep;
961 etaDCalRC[bin] = r->Uniform(etaMin, etaMax);
970 Double_t trackPtSumDCal[nEtaBinsSF] = {0.};
971 Double_t trackPtSumDCalRC[nEtaBinsRC] = {0.};
972 Double_t clusESumDCal[nEtaBinsSF] = {0.};
973 Double_t clusESumDCalRC[nEtaBinsRC] = {0.};
987 track = trackIterator.first;
988 trackEta = track.Eta();
990 trackPt = track.Pt();
993 if (TMath::Abs(trackEta) < etaTPC) {
994 trackPtSumTPC += trackPt;
998 if (TMath::Abs(trackEta) < etaEMCal && trackPhi > phiMinEMCal && trackPhi < phiMaxEMCal) {
999 trackPtSumEMCal += trackPt;
1003 deltaR =
GetDeltaR(&track, etaEMCalRC, phiEMCalRC);
1004 if (deltaR < jetR) {
1005 trackPtSumEMCalRC += trackPt;
1009 for (
Int_t bin=0; bin < nEtaBinsSF; bin++) {
1010 if (trackPhi > phiMinDCal && trackPhi < phiMaxDCal) {
1011 etaMin = -etaEMCal+ bin*etaStep;
1012 etaMax = etaMin + etaStep;
1013 if (trackEta > etaMin && trackEta < etaMax) {
1014 trackPtSumDCal[bin] += trackPt;
1020 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
1021 deltaR =
GetDeltaR(&track, etaDCalRC[bin], phiDCalRC);
1022 if (deltaR < jetR) {
1023 trackPtSumDCalRC[bin] += trackPt;
1040 clus = clusIterator.first;
1041 clusEta = clus.Eta();
1046 if (TMath::Abs(clusEta) < etaEMCal && clusPhi > phiMinEMCal && clusPhi < phiMaxEMCal) {
1047 clusESumEMCal += clusE;
1051 deltaR =
GetDeltaR(&clus, etaEMCalRC, phiEMCalRC);
1052 if (deltaR < jetR) {
1053 clusESumEMCalRC += clusE;
1057 for (
Int_t bin=0; bin < nEtaBinsSF; bin++) {
1058 if (clusPhi > phiMinDCal && clusPhi < phiMaxDCal) {
1059 etaMin = -etaEMCal+ bin*etaStep;
1060 etaMax = etaMin + etaStep;
1061 if (clusEta > etaMin && clusEta < etaMax) {
1062 clusESumDCal[bin] += clusE;
1068 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
1069 deltaR =
GetDeltaR(&clus, etaDCalRC[bin], phiDCalRC);
1070 if (deltaR < jetR) {
1071 clusESumDCalRC[bin] += clusE;
1078 Double_t numerator = (trackPtSumEMCal + clusESumEMCal) / accEMCal;
1079 Double_t denominator = trackPtSumTPC / accTPC;
1080 Double_t scaleFactor = numerator / denominator;
1081 TString histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jetCont->GetArrayName().Data());
1085 Double_t accDCalRegionBin = accDCalRegion / nEtaBinsSF;
1086 for (
Int_t bin=0; bin < nEtaBinsSF; bin++) {
1087 numerator = (trackPtSumDCal[bin] + clusESumDCal[bin]) / accDCalRegionBin;
1088 scaleFactor = numerator / denominator;
1089 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCalRegion", jetCont->GetArrayName().Data());
1095 Double_t deltaPt = trackPtSumEMCalRC + clusESumEMCalRC - rho * TMath::Pi() * jetR * jetR;
1096 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jetCont->GetArrayName().Data());
1100 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
1101 deltaPt = trackPtSumDCalRC[bin] + clusESumDCalRC[bin] - rho * TMath::Pi() * jetR * jetR;
1102 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtDCalRegion", jetCont->GetArrayName().Data());
1114 TString jetContName = jetCont->GetName();
1115 if (jetContName.Contains(
"HardCore")) pT = jet->
Pt();
1126 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
1136 Double_t deltaEta = TMath::Abs(part->Eta() - etaRef);
1137 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
1163 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1164 TString jetContName = jets->GetName();
1165 if (jetContName.Contains(
"HardCore"))
continue;
1169 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
1173 for (
auto jet : jets->
all()) {
1176 Float_t corrPt = jet->Pt() - rhoVal * jet->Area();
1179 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
1184 UInt_t rejectionReason = 0;
1185 if (!jets->
AcceptJet(jet, rejectionReason)) {
1186 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
1187 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1192 histname = TString::Format(
"%s/JetHistograms/hCentVsPt", jets->GetArrayName().Data());
1196 histname = TString::Format(
"%s/JetHistograms/hPtVsEtaVsPhi", jets->GetArrayName().Data());
1200 histname = TString::Format(
"%s/JetHistograms/hPtUpscaledMB", jets->GetArrayName().Data());
1204 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
1208 histname = TString::Format(
"%s/JetHistograms/hNEFVsPt", jets->GetArrayName().Data());
1212 TLorentzVector leadPart;
1215 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1216 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPt", jets->GetArrayName().Data());
1220 histname = TString::Format(
"%s/JetHistograms/hZVsPt", jets->GetArrayName().Data());
1222 for (
Int_t i=0; i<jet->GetNumberOfTracks(); i++) {
1223 track =
static_cast<AliVTrack*
>(jet->Track(i));
1224 z = track->Pt() / TMath::Abs(corrPt);
1229 histname = TString::Format(
"%s/JetHistograms/hNConstVsPt", jets->GetArrayName().Data());
1247 if (!histJetObservables)
return;
1248 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1249 TString title(histJetObservables->GetAxis(n)->GetTitle());
1250 if (
title==
"Centrality (%)")
1251 contents[n] =
fCent;
1252 else if (
title==
"LeadingHadronRequired")
1254 else if (
title==
"#it{p}_{T,trig jet} (GeV/#it{c})")
1256 else if (
title==
"#it{p}_{T,ass jet} (GeV/#it{c})")
1258 else if (
title==
"#phi_{trig jet}")
1260 else if (
title==
"#phi_{ass jet}")
1262 else if (
title==
"#eta_{trig jet}")
1264 else if (
title==
"#eta_{ass jet}")
1267 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1269 histJetObservables->Fill(contents);
1279 if (!histJetObservables)
return;
1280 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1281 TString title(histJetObservables->GetAxis(n)->GetTitle());
1282 if (
title==
"Centrality (%)")
1283 contents[n] =
fCent;
1284 else if (
title==
"#Delta#phi")
1286 else if (
title==
"#Delta#eta")
1288 else if (
title==
"A_{J}")
1290 else if (
title==
"x_{J}")
1292 else if (
title==
"k_{Ty} (GeV)")
1294 else if (
title==
"N_{tracks, trig jet}")
1296 else if (
title==
"N_{tracks, ass jet}")
1299 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1301 histJetObservables->Fill(contents);
1311 if (!histJetObservables)
return;
1312 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1313 TString title(histJetObservables->GetAxis(n)->GetTitle());
1316 else if (
title==
"#Delta#phi")
1317 contents[n] = deltaPhi;
1318 else if (
title==
"#it{p}_{T,particle} (GeV/#it{c})")
1319 contents[n] = trackPt;
1320 else if (
title==
"#it{p}_{T}#parallel (GeV/#it{c})")
1321 contents[n] = balancePt;
1323 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1325 histJetObservables->Fill(contents);
1334 TString histname =
"GeometricalMatchingEfficiency";
1344 TString thnname =
"GeometricalMatching";
1347 if (!histJetObservables)
return;
1348 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1349 TString title(histJetObservables->GetAxis(n)->GetTitle());
1350 if (
title==
"Centrality (%)")
1351 contents[n] =
fCent;
1352 else if (
title==
"isSwitched")
1353 contents[n] = isSwitched;
1354 else if (
title==
"#DeltaR_{trig}")
1355 contents[n] = trigDeltaR;
1356 else if (
title==
"#DeltaR_{ass}")
1357 contents[n] = assDeltaR;
1358 else if (
title==
"trig #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}")
1360 else if (
title==
"ass #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}")
1362 else if (
title==
"A_{J} low-threshold")
1364 else if (
title==
"A_{J} hard-core")
1367 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1369 histJetObservables->Fill(contents);
Double_t fMatchingJetR
jet R for matching study
void AllocateDijetImbalanceHistograms()
Double_t GetRhoVal() const
const TString & GetRhoName() const
void UserCreateOutputObjects()
void AllocateJetHistograms()
Float_t fMaxPt
Histogram pt limit.
AliJetContainer * GetJetContainer(Int_t i=0) const
Bool_t fUseManualEventCuts
Flag to use manual event cuts.
UInt_t fOffTrigger
offline trigger for event selection
static AliEmcalDownscaleFactorsOCDB * Instance()
const AliClusterIterableMomentumContainer accepted_momentum() const
void AllocateGeometricalMatchingHistograms()
void DoMomentumBalance(TString histname)
Container with name, TClonesArray and cuts for particles.
Bool_t fPlotJetHistograms
Set whether to enable inclusive jet histograms.
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.
void SetRun(int runnumber)
TList * fEventCutList
! Output list for event cut histograms
void FillTH3(const char *hname, double x, double y, double z, double weight=1., Option_t *opt="")
Fill a 3D histogram within the container.
Double_t fDijetLeadingHadronPt
leading hadron pT threshold for leading jet in dijet
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
void FillDijetCandHistograms(TString histname)
AliAnalysisTaskEmcalDijetImbalance()
Double_t GetDownscaleFactorForTriggerClass(const TString &trigger) const
void FillGeometricalMatchingHistograms()
Double_t fMinAssJetPt
subleading jet min pT in a dijet pair, for it to be accepted
UShort_t GetNumberOfTracks() const
Bool_t fDoMomentumBalance
Set whether to enable momentum balance study.
void FindDijet(AliJetContainer *jetCont, Int_t leadingHadronCutBin)
Bool_t fPlotDijetImbalanceHistograms
Set whether to enable dijet imbalance histograms.
AliEventCuts fEventCuts
event selection utility
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
AliEmcalJet * GetLeadingJet(const char *opt="")
void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet *jet) const
Dijet_t fDijet
! dijet candidate (per event)
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.
TObject * FindObject(const char *name) const
Find an object inside the container.
THashList * GetListOfHistograms() const
Get the list of histograms.
Double_t GetDeltaR(AliEmcalJet *jet1, AliEmcalJet *jet2)
Double_t GetLeadingHadronPt(const AliEmcalJet *jet) const
Double_t fClusterConstituentThreshold
constituent threshold for matching study
Di-jet imbalance analysis with full jets.
AliEMCALGeometry * fGeom
!emcal geometry
Double_t Phi_0_2pi() const
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.
Int_t leadingHadronCutType
Double_t fDeltaPhiMin
minimum delta phi between di-jets
Double_t fMBUpscaleFactor
! inverse of downscale factor, for MB trigger
Bool_t fComputeBackground
Set whether to enable study of background.
std::vector< TString > GetTriggerClasses() const
Double_t fCent
!event centrality
Double_t GetJetPt(AliJetContainer *jetCont, AliEmcalJet *jet)
void AllocateDijetCandHistograms()
void RunChanged(Int_t run)
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 FillMomentumBalanceHistograms(TString histname, Double_t deltaPhi, Double_t trackPt, Double_t balancePt)
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
THistManager fHistManager
Histogram manager.
void FillDijetImbalanceHistograms(TString histname)
AliRhoParameter * GetRhoParameter()
static Double_t * GenerateFixedBinArray(Int_t n, Double_t min, Double_t max)
Float_t GetJetRadius() const
AliEmcalList * fOutput
!output list
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
Handler for downscale factors for various triggers obtained from the OCDB.
Base task in the EMCAL jet framework.
Bool_t fDoGeometricalMatching
Set whether to enable constituent study with geometrical matching.
Represent a jet reconstructed using the EMCal jet framework.
const AliTrackIterableMomentumContainer accepted_momentum() const
Int_t GetRunNumber(TString)
Dijet_t fMatchingDijet
! low-threshold matching dijet, for matching study
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
Main initialization function on the worker.
const AliJetIterableContainer accepted() const
Double_t fTrackConstituentThreshold
constituent threshold for matching study
Double_t * fCentHistBins
! cent bins
void FindMatchingDijet(AliJetContainer *jetCont)
Int_t fNCentHistBins
! number of cent bins
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.
Double_t fMinTrigJetPt
leading jet min pT in a dijet pair
void ComputeBackground(AliJetContainer *jetCont)
Container structure for EMCAL clusters.
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
virtual ~AliAnalysisTaskEmcalDijetImbalance()
Container for jet within the EMCAL jet framework.
void DoGeometricalMatching()
Bool_t fPlotDijetCandHistograms
Set whether to enable dijet pair histograms.
void AllocateMomentumBalanceHistograms()
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