16 #include <TClonesArray.h>
20 #include <THnSparse.h>
23 #include <AliVCluster.h>
24 #include <AliVParticle.h>
33 #include "AliEMCALGeometry.h"
49 fUseManualEventCuts(kFALSE),
53 fDijetLeadingHadronPt(0),
57 fPlotJetHistograms(kFALSE),
58 fPlotDijetCandHistograms(kFALSE),
59 fPlotDijetImbalanceHistograms(kFALSE),
60 fComputeBackground(kFALSE),
61 fDoMomentumBalance(kFALSE),
62 fDoGeometricalMatching(kFALSE),
64 fTrackConstituentThreshold(0),
65 fClusterConstituentThreshold(0)
82 fUseManualEventCuts(kFALSE),
86 fDijetLeadingHadronPt(0),
90 fPlotJetHistograms(kFALSE),
91 fPlotDijetCandHistograms(kFALSE),
92 fPlotDijetImbalanceHistograms(kFALSE),
93 fComputeBackground(kFALSE),
94 fDoMomentumBalance(kFALSE),
95 fDoGeometricalMatching(kFALSE),
97 fTrackConstituentThreshold(0),
98 fClusterConstituentThreshold(0)
142 while ((obj = next())) {
179 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
182 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
183 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
189 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
190 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
195 histname = TString::Format(
"%s/JetHistograms/hCentVsPt", jets->GetArrayName().Data());
196 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});Centrality (%);counts";
200 histname = TString::Format(
"%s/JetHistograms/hPtVsEtaVsPhi", jets->GetArrayName().Data());
201 title = histname +
";#eta_{jet} (rad);#phi_{jet} (rad);#it{p}_{T}^{corr} (GeV/#it{c})";
202 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, -0.5, 0.5, 101, 0, TMath::Pi() * 2.02, 75, 0, maxPtBin);
205 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
206 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{p}_{T,particle}^{leading} (GeV/#it{c})";
210 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
211 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{A}_{jet}";
215 histname = TString::Format(
"%s/JetHistograms/hNEFVsPt", jets->GetArrayName().Data());
216 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});NEF";
220 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPt", jets->GetArrayName().Data());
221 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});#it{z}_{leading}";
225 histname = TString::Format(
"%s/JetHistograms/hNConstVsPt", jets->GetArrayName().Data());
226 title = histname +
";#it{p}_{T}^{corr} (GeV/#it{c});No. of constituents";
232 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jets->GetArrayName().Data());
233 title = histname +
";Centrality;Scale factor;counts";
236 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jets->GetArrayName().Data());
237 title = histname +
";#delta#it{p}_{T} (GeV/#it{c});counts";
240 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCalRegion", jets->GetArrayName().Data());
241 title = histname +
";Centrality;Scale factor;Eta bin";
242 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, 0, 100, 200, 0, 10, 28, -0.5, 27.5);
244 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtDCalRegion", jets->GetArrayName().Data());
245 title = histname +
";#delta#it{p}_{T} (GeV/#it{c});Eta bin;counts";
264 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
273 axisTitle[dim] =
"Centrality (%)";
281 axisTitle[dim] =
"LeadingHadronRequired";
288 axisTitle[dim] =
"#it{p}_{T,trig jet} (GeV/#it{c})";
290 min[dim] = -
fMaxPt/2 + 25;
295 axisTitle[dim] =
"#it{p}_{T,ass jet} (GeV/#it{c})";
297 min[dim] = -
fMaxPt/2 + 25;
302 axisTitle[dim] =
"#phi_{trig jet}";
305 max[dim] = TMath::TwoPi();
309 axisTitle[dim] =
"#phi_{ass jet}";
312 max[dim] = TMath::TwoPi();
316 axisTitle[dim] =
"#eta_{trig jet}";
323 axisTitle[dim] =
"#eta_{ass jet}";
330 TString thnname = TString::Format(
"%s/DijetCandObservables", jets->GetArrayName().Data());
332 for (
Int_t i = 0; i < dim; i++) {
333 hn->GetAxis(i)->SetTitle(axisTitle[i]);
334 hn->SetBinEdges(i, binEdges[i]);
348 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
357 axisTitle[dim] =
"Centrality (%)";
365 axisTitle[dim] =
"#Delta#phi";
372 axisTitle[dim] =
"#Delta#eta";
379 axisTitle[dim] =
"A_{J}";
386 axisTitle[dim] =
"x_{J}";
393 axisTitle[dim] =
"k_{Ty} (GeV)";
400 axisTitle[dim] =
"N_{tracks, trig jet}";
407 axisTitle[dim] =
"N_{tracks, ass jet}";
414 TString thnname = TString::Format(
"%s/DijetImbalanceObservables", jets->GetArrayName().Data());
416 for (
Int_t i = 0; i < dim; i++) {
417 hn->GetAxis(i)->SetTitle(axisTitle[i]);
418 hn->SetBinEdges(i, binEdges[i]);
430 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
440 axisTitle[dim] =
"A_{J}";
447 axisTitle[dim] =
"#Delta#phi";
454 axisTitle[dim] =
"#it{p}_{T,particle} (GeV/#it{c})";
464 max[dim] = pTParticleBins[nbins[dim]];
465 binEdges[dim] = pTParticleBins;
468 axisTitle[dim] =
"#it{p}_{T}#parallel (GeV/#it{c})";
477 max[dim] = pTParallelBins[nbins[dim]];
478 binEdges[dim] = pTParallelBins;
481 TString thnname = TString::Format(
"%s/MomentumBalance", jets->GetArrayName().Data());
483 for (
Int_t i = 0; i < dim; i++) {
484 hn->GetAxis(i)->SetTitle(axisTitle[i]);
485 hn->SetBinEdges(i, binEdges[i]);
504 axisTitle[dim] =
"Centrality (%)";
512 axisTitle[dim] =
"isSwitched";
519 axisTitle[dim] =
"#DeltaR_{trig}";
526 axisTitle[dim] =
"#DeltaR_{ass}";
533 axisTitle[dim] =
"trig #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}";
540 axisTitle[dim] =
"ass #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}";
547 axisTitle[dim] =
"A_{J} low-threshold";
554 axisTitle[dim] =
"A_{J} hard-core";
561 TString thnname =
"GeometricalMatching";
563 for (
Int_t i = 0; i < dim; i++) {
564 hn->GetAxis(i)->SetTitle(axisTitle[i]);
565 hn->SetBinEdges(i, binEdges[i]);
571 histname =
"GeometricalMatchingEfficiency";
572 title = histname +
";isMatched;counts";
618 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
619 TString jetContName = jetCont->GetName();
620 if (jetContName.Contains(
"HardCore"))
continue;
628 for (
Int_t leadingHadronCutType=0; leadingHadronCutType<2; leadingHadronCutType++) {
631 FindDijet(jetCont, leadingHadronCutType);
635 TString histname = TString::Format(
"%s/DijetCandObservables", jetCont->GetArrayName().Data());
649 TString histname = TString::Format(
"%s/DijetImbalanceObservables", jetCont->GetArrayName().Data());
655 histname = TString::Format(
"%s/MomentumBalance", jetCont->GetArrayName().Data());
704 for(
auto assJetCand : jetCont->
accepted()) {
705 if (!assJetCand)
continue;
707 if ( TMath::Abs(trigJet->
Phi() - assJetCand->Phi()) <
fDeltaPhiMin )
continue;
710 if ( assJetCandPt < assJetPt )
continue;
742 track = trackIterator.second;
752 Double_t deltaPhiTrigJet = TMath::Abs(trackPhi - trigJetPhi);
753 Double_t deltaPhiAssJet = TMath::Abs(trackPhi - assJetPhi);
754 Bool_t isNearside = deltaPhiTrigJet < deltaPhiAssJet;
759 deltaPhi = trackPhi - trigJetPhi;
760 balancePt = trackPt * TMath::Cos(deltaPhi);
763 deltaPhi = trackPhi - assJetPhi;
764 balancePt = -trackPt * TMath::Cos(deltaPhi);
778 TString jetContAllName = Form(
"Jet_AKTFullR0%d0_tracks_pT0150_caloClusters_E0300_pt_scheme", (
int) (
fMatchingJetR*10) );
784 TString jetContHardCoreName = Form(
"JetHardCore_AKTFullR0%d0_tracks_pT%d_caloClusters_E%d_pt_scheme", (
int) (
fMatchingJetR*10), trackThreshold, clusThreshold);
805 for(
auto matchingTrigJetCand : jetCont->
accepted()) {
806 if (!matchingTrigJetCand)
continue;
808 if (matchingTrigJet) {
809 if (
GetJetPt(jetCont, matchingTrigJetCand) <
GetJetPt(jetCont, matchingTrigJet) )
continue;
811 matchingTrigJet = matchingTrigJetCand;
813 if (!matchingTrigJet)
return;
817 for(
auto matchingAssJetCand : jetCont->
accepted()) {
818 if (!matchingAssJetCand)
continue;
820 if (matchingAssJet) {
821 if (
GetJetPt(jetCont, matchingAssJetCand) <
GetJetPt(jetCont, matchingAssJet) )
continue;
823 matchingAssJet = matchingAssJetCand;
827 if (matchingAssJet) {
830 if (
GetJetPt(jetCont, matchingTrigJet) <
GetJetPt(jetCont, matchingAssJet) ) {
871 Double_t phiMinEMCal =
fGeom->GetArm1PhiMin() * TMath::DegToRad();
872 Double_t phiMaxEMCal =
fGeom->GetEMCALPhiMax() * TMath::DegToRad();
873 Double_t phiMinDCal =
fGeom->GetDCALPhiMin() * TMath::DegToRad();
874 Double_t phiMaxDCal =
fGeom->GetDCALPhiMax() * TMath::DegToRad();
875 Double_t phiMinPHOS = 250 * TMath::DegToRad();
876 Double_t phiMaxPHOS = 320 * TMath::DegToRad();
878 Double_t accTPC = 2 * etaTPC * 2 * TMath::Pi();
879 Double_t accEMCal = 2 * etaEMCal * (phiMaxEMCal - phiMinEMCal);
880 Double_t accDCalRegion = 2 * etaEMCal * (phiMaxDCal - phiMinDCal);
883 TRandom3* r =
new TRandom3(0);
885 Double_t etaEMCalfid = etaEMCal - jetR;
886 Double_t phiMinEMCalfid = phiMinEMCal + jetR;
887 Double_t phiMaxEMCalfid = phiMaxEMCal - jetR;
888 Double_t phiMinDCalRegionfid = phiMinDCal + jetR;
889 Double_t phiMaxDCalRegionfid = phiMaxDCal - jetR;
892 Double_t etaEMCalRC = r->Uniform(-etaEMCalfid, etaEMCalfid);
893 Double_t phiEMCalRC = r->Uniform(phiMinEMCalfid, phiMaxEMCalfid);
897 const Int_t nEtaBinsSF = 28;
898 const Int_t nEtaBinsRC = 20;
900 Double_t phiDCalRC = r->Uniform(phiMinDCalRegionfid, phiMaxDCalRegionfid);
904 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
905 etaMin = -etaEMCalfid + bin*etaStep;
906 etaMax = etaMin + etaStep;
907 etaDCalRC[bin] = r->Uniform(etaMin, etaMax);
916 Double_t trackPtSumDCal[nEtaBinsSF] = {0.};
917 Double_t trackPtSumDCalRC[nEtaBinsRC] = {0.};
918 Double_t clusESumDCal[nEtaBinsSF] = {0.};
919 Double_t clusESumDCalRC[nEtaBinsRC] = {0.};
933 track = trackIterator.first;
934 trackEta = track.Eta();
936 trackPt = track.Pt();
939 if (TMath::Abs(trackEta) < etaTPC) {
940 trackPtSumTPC += trackPt;
944 if (TMath::Abs(trackEta) < etaEMCal && trackPhi > phiMinEMCal && trackPhi < phiMaxEMCal) {
945 trackPtSumEMCal += trackPt;
949 deltaR =
GetDeltaR(&track, etaEMCalRC, phiEMCalRC);
951 trackPtSumEMCalRC += trackPt;
955 for (
Int_t bin=0; bin < nEtaBinsSF; bin++) {
956 if (trackPhi > phiMinDCal && trackPhi < phiMaxDCal) {
957 etaMin = -etaEMCal+ bin*etaStep;
958 etaMax = etaMin + etaStep;
959 if (trackEta > etaMin && trackEta < etaMax) {
960 trackPtSumDCal[bin] += trackPt;
966 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
967 deltaR =
GetDeltaR(&track, etaDCalRC[bin], phiDCalRC);
969 trackPtSumDCalRC[bin] += trackPt;
986 clus = clusIterator.first;
987 clusEta = clus.Eta();
992 if (TMath::Abs(clusEta) < etaEMCal && clusPhi > phiMinEMCal && clusPhi < phiMaxEMCal) {
993 clusESumEMCal += clusE;
997 deltaR =
GetDeltaR(&clus, etaEMCalRC, phiEMCalRC);
999 clusESumEMCalRC += clusE;
1003 for (
Int_t bin=0; bin < nEtaBinsSF; bin++) {
1004 if (clusPhi > phiMinDCal && clusPhi < phiMaxDCal) {
1005 etaMin = -etaEMCal+ bin*etaStep;
1006 etaMax = etaMin + etaStep;
1007 if (clusEta > etaMin && clusEta < etaMax) {
1008 clusESumDCal[bin] += clusE;
1014 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
1015 deltaR =
GetDeltaR(&clus, etaDCalRC[bin], phiDCalRC);
1016 if (deltaR < jetR) {
1017 clusESumDCalRC[bin] += clusE;
1024 Double_t numerator = (trackPtSumEMCal + clusESumEMCal) / accEMCal;
1025 Double_t denominator = trackPtSumTPC / accTPC;
1026 Double_t scaleFactor = numerator / denominator;
1027 TString histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorEMCal", jetCont->GetArrayName().Data());
1031 Double_t accDCalRegionBin = accDCalRegion / nEtaBinsSF;
1032 for (
Int_t bin=0; bin < nEtaBinsSF; bin++) {
1033 numerator = (trackPtSumDCal[bin] + clusESumDCal[bin]) / accDCalRegionBin;
1034 scaleFactor = numerator / denominator;
1035 histname = TString::Format(
"%s/BackgroundHistograms/hScaleFactorDCalRegion", jetCont->GetArrayName().Data());
1041 Double_t deltaPt = trackPtSumEMCalRC + clusESumEMCalRC - rho * TMath::Pi() * jetR * jetR;
1042 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtEMCal", jetCont->GetArrayName().Data());
1046 for (
Int_t bin=0; bin < nEtaBinsRC; bin++) {
1047 deltaPt = trackPtSumDCalRC[bin] + clusESumDCalRC[bin] - rho * TMath::Pi() * jetR * jetR;
1048 histname = TString::Format(
"%s/BackgroundHistograms/hDeltaPtDCalRegion", jetCont->GetArrayName().Data());
1060 TString jetContName = jetCont->GetName();
1061 if (jetContName.Contains(
"HardCore")) pT = jet->
Pt();
1072 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
1082 Double_t deltaEta = TMath::Abs(part->Eta() - etaRef);
1083 Double_t deltaR = TMath::Sqrt( deltaPhi*deltaPhi + deltaEta*deltaEta );
1109 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1110 TString jetContName = jets->GetName();
1111 if (jetContName.Contains(
"HardCore"))
continue;
1115 histname = TString::Format(
"%s/JetHistograms/hRhoVsCent", jets->GetArrayName().Data());
1119 for (
auto jet : jets->
all()) {
1122 Float_t corrPt = jet->Pt() - rhoVal * jet->Area();
1125 histname = TString::Format(
"%s/JetHistograms/hAreaVsPt", jets->GetArrayName().Data());
1130 UInt_t rejectionReason = 0;
1131 if (!jets->
AcceptJet(jet, rejectionReason)) {
1132 histname = TString::Format(
"%s/JetHistograms/hJetRejectionReason", jets->GetArrayName().Data());
1133 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1138 histname = TString::Format(
"%s/JetHistograms/hCentVsPt", jets->GetArrayName().Data());
1142 histname = TString::Format(
"%s/JetHistograms/hPtVsEtaVsPhi", jets->GetArrayName().Data());
1146 histname = TString::Format(
"%s/JetHistograms/hPtLeadingVsPt", jets->GetArrayName().Data());
1150 histname = TString::Format(
"%s/JetHistograms/hNEFVsPt", jets->GetArrayName().Data());
1154 TLorentzVector leadPart;
1157 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
1158 histname = TString::Format(
"%s/JetHistograms/hZLeadingVsPt", jets->GetArrayName().Data());
1162 histname = TString::Format(
"%s/JetHistograms/hNConstVsPt", jets->GetArrayName().Data());
1181 if (!histJetObservables)
return;
1182 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1183 TString title(histJetObservables->GetAxis(n)->GetTitle());
1184 if (
title==
"Centrality (%)")
1185 contents[n] =
fCent;
1186 else if (
title==
"LeadingHadronRequired")
1188 else if (
title==
"#it{p}_{T,trig jet} (GeV/#it{c})")
1190 else if (
title==
"#it{p}_{T,ass jet} (GeV/#it{c})")
1192 else if (
title==
"#phi_{trig jet}")
1194 else if (
title==
"#phi_{ass jet}")
1196 else if (
title==
"#eta_{trig jet}")
1198 else if (
title==
"#eta_{ass jet}")
1201 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1203 histJetObservables->Fill(contents);
1213 if (!histJetObservables)
return;
1214 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1215 TString title(histJetObservables->GetAxis(n)->GetTitle());
1216 if (
title==
"Centrality (%)")
1217 contents[n] =
fCent;
1218 else if (
title==
"#Delta#phi")
1220 else if (
title==
"#Delta#eta")
1222 else if (
title==
"A_{J}")
1224 else if (
title==
"x_{J}")
1226 else if (
title==
"k_{Ty} (GeV)")
1228 else if (
title==
"N_{tracks, trig jet}")
1230 else if (
title==
"N_{tracks, ass jet}")
1233 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1235 histJetObservables->Fill(contents);
1245 if (!histJetObservables)
return;
1246 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1247 TString title(histJetObservables->GetAxis(n)->GetTitle());
1250 else if (
title==
"#Delta#phi")
1251 contents[n] = deltaPhi;
1252 else if (
title==
"#it{p}_{T,particle} (GeV/#it{c})")
1253 contents[n] = trackPt;
1254 else if (
title==
"#it{p}_{T}#parallel (GeV/#it{c})")
1255 contents[n] = balancePt;
1257 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1259 histJetObservables->Fill(contents);
1268 TString histname =
"GeometricalMatchingEfficiency";
1278 TString thnname =
"GeometricalMatching";
1281 if (!histJetObservables)
return;
1282 for (
Int_t n = 0; n < histJetObservables->GetNdimensions(); n++) {
1283 TString title(histJetObservables->GetAxis(n)->GetTitle());
1284 if (
title==
"Centrality (%)")
1285 contents[n] =
fCent;
1286 else if (
title==
"isSwitched")
1287 contents[n] = isSwitched;
1288 else if (
title==
"#DeltaR_{trig}")
1289 contents[n] = trigDeltaR;
1290 else if (
title==
"#DeltaR_{ass}")
1291 contents[n] = assDeltaR;
1292 else if (
title==
"trig #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}")
1294 else if (
title==
"ass #it{p}_{T,low-thresh} - #it{p}_{T,hard-core}")
1296 else if (
title==
"A_{J} low-threshold")
1298 else if (
title==
"A_{J} hard-core")
1301 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1303 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
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.
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()
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
Bool_t fComputeBackground
Set whether to enable study of background.
Double_t fCent
!event centrality
Double_t GetJetPt(AliJetContainer *jetCont, AliEmcalJet *jet)
void AllocateDijetCandHistograms()
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
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
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