18 #include <TClonesArray.h>
22 #include <THnSparse.h>
23 #include <THashList.h>
25 #include <AliVEventHandler.h>
26 #include <AliAnalysisManager.h>
31 #include "AliCentrality.h"
32 #include "AliVCluster.h"
33 #include "AliVParticle.h"
34 #include "AliVTrack.h"
36 #include "AliEMCALGeometry.h"
37 #include "AliEMCALGeoParams.h"
39 #include "AliVVZERO.h"
40 #include "AliESDUtils.h"
50 fParticleLevel(kFALSE),
56 fDoLeadingObjectPosition(0),
57 fMaxCellsInCluster(50),
60 fSeparateEMCalDCal(kTRUE),
69 fHistManager("AliAnalysisTaskEmcalJetQA")
73 memset(fNTotClusters, 0,
sizeof(
Int_t)*3);
75 SetMakeGeneralHistograms(kTRUE);
82 fParticleLevel(kFALSE),
88 fDoLeadingObjectPosition(0),
89 fMaxCellsInCluster(50),
92 fSeparateEMCalDCal(kTRUE),
123 AliEmcalContainer* cont = 0;
131 while ((cont = static_cast<AliEmcalContainer*>(nextPartColl()))) {
134 histname = TString::Format(
"%s/fHistTrNegativeLabels_%d", cont->GetArrayName().Data(), i);
135 title = histname +
";% of negative labels;counts";
138 histname = TString::Format(
"%s/fHistTrZeroLabels_%d", cont->GetArrayName().Data(), i);
139 title = histname +
";% of zero labels;counts";
148 histname = TString::Format(
"%s/fHistRejectionReason_%d", cont->GetArrayName().Data(), i);
149 title = histname +
";Rejection reason;#it{p}_{T,track} (GeV/#it{c});counts";
153 for (
Int_t j = 0; j < nlabels; j++) {
154 histname = TString::Format(
"%s/fHistTrPhiEtaPt_%d_%d", cont->GetArrayName().Data(), i, j);
155 title = histname +
";#eta;#phi;#it{p}_{T} (GeV/#it{c})";
156 fHistManager.
CreateTH3(histname.Data(), title.Data(), 100, -1, 1, 100, 0, TMath::TwoPi(),
nPtBins, 0,
fMaxPt);
161 histname = TString::Format(
"%s/fHistTrPhiEtaZeroLab_%d", cont->GetArrayName().Data(), i);
162 title = histname +
";#eta;#phi;counts";
165 histname = TString::Format(
"%s/fHistTrPtZeroLab_%d", cont->GetArrayName().Data(), i);
166 title = histname +
";#it{p}_{T} (GeV/#it{c});counts";
170 histname = TString::Format(
"%s/fHistTrEmcPhiEta_%d", cont->GetArrayName().Data(), i);
171 title = histname +
";#eta;#phi;counts";
174 histname = TString::Format(
"%s/fHistTrEmcPt_%d", cont->GetArrayName().Data(), i);
175 title = histname +
";#it{p}_{T} (GeV/#it{c});counts";
178 histname = TString::Format(
"%s/fHistTrPhiEtaNonProp_%d", cont->GetArrayName().Data(), i);
179 title = histname +
";#eta;#phi;counts";
182 histname = TString::Format(
"%s/fHistTrPtNonProp_%d", cont->GetArrayName().Data(), i);
183 title = histname +
";#it{p}_{T} (GeV/#it{c});counts";
186 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", cont->GetArrayName().Data(), i);
187 title = histname +
";#it{p}_{T} (GeV/#it{c});#delta#eta;counts";
190 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", cont->GetArrayName().Data(), i);
191 title = histname +
";#it{p}_{T} (GeV/#it{c});#delta#phi;counts";
194 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", cont->GetArrayName().Data(), i);
195 title = histname +
";#it{p}_{T} (GeV/#it{c});#delta#it{p}_{T} (GeV/#it{c});counts";
202 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) {
204 const Int_t nSM = 20;
206 for (
Int_t sm = 0; sm < nSM; sm++) {
207 histname = TString::Format(
"%s/BySM/fHistClusEnergy_SM%d_%d", cont->GetArrayName().Data(), sm, i);
208 title = histname +
";#it{E}_{cluster} (GeV);counts";
212 histname = TString::Format(
"%s/fHistRejectionReason_%d", cont->GetArrayName().Data(), i);
213 title = histname +
";Rejection reason;#it{E}_{cluster} (GeV);counts";
217 histname = TString::Format(
"%s/fHistClusPosition_%d", cont->GetArrayName().Data(), i);
218 title = histname +
";#it{x} (cm);#it{y} (cm);#it{z} (cm)";
219 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, -500, 500, 50, -500, 500, 50, -500, 500);
221 histname = TString::Format(
"%s/fHistClusPhiEtaEnergy_%d", cont->GetArrayName().Data(), i);
222 title = histname +
";#eta;#phi;#it{E}_{cluster} (GeV)";
223 fHistManager.
CreateTH3(histname.Data(), title.Data(), 100, -1, 1, 100, 0, TMath::TwoPi(),
nPtBins, 0,
fMaxPt);
226 histname = TString::Format(
"%s/fHistClusDeltaPhiEPEnergy_%d", cont->GetArrayName().Data(), i);
227 title = histname +
";#it{E}_{cluster} (GeV);#phi_{cluster} - #psi_{EP};counts";
232 histname = TString::Format(
"%s/fHistClusMCEnergyFraction_%d", cont->GetArrayName().Data(), i);
233 title = histname +
";MC fraction;counts";
237 histname = TString::Format(
"%s/fHistClusTimeEnergy_%d", cont->GetArrayName().Data(), i);
238 title = histname +
";#it{E}_{cluster} (GeV);time (s);counts";
242 while (nbins > nPtBins) nbins /= 2;
243 histname = TString::Format(
"%s/fHistNCellsEnergy_%d", cont->GetArrayName().Data(), i);
244 title = histname +
";#it{E}_{cluster} (GeV);#it{N}_{cells};counts";
247 histname = TString::Format(
"%s/fHistFcrossEnergy_%d", cont->GetArrayName().Data(), i);
248 title = histname +
";#it{E}_{cluster} (GeV);#it{F}_{cross};counts";
251 histname = TString::Format(
"%s/fHistClusEnergy_%d", cont->GetArrayName().Data(), i);
252 title = histname +
";#it{E}_{cluster} (GeV);counts";
255 histname = TString::Format(
"%s/fHistClusNonLinCorrEnergy_%d", cont->GetArrayName().Data(), i);
256 title = histname +
";#it{E}_{cluster} (GeV);counts";
259 histname = TString::Format(
"%s/fHistClusHadCorrEnergy_%d", cont->GetArrayName().Data(), i);
260 title = histname +
";#it{E}_{cluster} (GeV);counts";
267 histname = TString::Format(
"%s/fHistCellsAbsIdEnergy_%d",
fCaloCellsName.Data(), i);
268 title = histname +
";cell abs. Id;#it{E}_{cell} (GeV);counts";
271 histname = TString::Format(
"%s/fHistCellsAbsIdTime_%d",
fCaloCellsName.Data(), i);
272 title = histname +
";cell abs. Id;#it{time}_{cell} (s);counts";
284 axistitle[dim] =
"Centrality %";
291 axistitle[dim] = Form(
"Centrality %s %%",
fCentMethod2.Data());
299 axistitle[dim] = Form(
"Centrality %s %%",
fCentMethod3.Data());
307 axistitle[dim] =
"V0A total multiplicity";
313 axistitle[dim] =
"V0C total multiplicity";
320 axistitle[dim] =
"V0A+V0C total multiplicity";
328 axistitle[dim] =
"#psi_{EP}";
330 min[dim] = -TMath::Pi();
331 max[dim] = TMath::Pi();
337 axistitle[dim] =
"No. of tracks";
350 axistitle[dim] =
"#it{p}_{T,track}^{leading} (GeV/c)";
357 axistitle[dim] =
"#eta_{track}^{leading}";
363 axistitle[dim] =
"#phi_{track}^{leading}";
366 max[dim] = TMath::TwoPi();
372 axistitle[dim] =
"No. of clusters";
387 axistitle[dim] =
"#it{E}_{EMCal cluster}^{leading} (GeV)";
393 axistitle[dim] =
"#it{E}_{DCal cluster}^{leading} (GeV)";
399 axistitle[dim] =
"#it{E}_{PHOS cluster}^{leading} (GeV)";
406 axistitle[dim] =
"#eta_{EMCal cluster}^{leading}";
412 axistitle[dim] =
"#phi_{EMCal cluster}^{leading}";
415 max[dim] = TMath::TwoPi();
418 axistitle[dim] =
"#eta_{DCal cluster}^{leading}";
424 axistitle[dim] =
"#phi_{DCal cluster}^{leading}";
427 max[dim] = TMath::TwoPi();
430 axistitle[dim] =
"#eta_{PHOS cluster}^{leading}";
436 axistitle[dim] =
"#phi_{PHOS cluster}^{leading}";
439 max[dim] = TMath::TwoPi();
444 axistitle[dim] =
"#it{E}_{cluster}^{leading} (GeV)";
451 axistitle[dim] =
"#eta_{cluster}^{leading}";
457 axistitle[dim] =
"#phi_{cluster}^{leading}";
460 max[dim] = TMath::TwoPi();
467 axistitle[dim] =
"No. of cells";
472 max[dim] = 10000-0.5;
484 for (
Int_t i = 0; i < dim; i++)
485 hn->GetAxis(i)->SetTitle(axistitle[i]);
505 fVZERO = InputEvent()->GetVZEROData();
507 AliError(
"AliVVZERO not available");
521 AliCentrality *aliCent = InputEvent()->GetCentrality();
547 AliDebug(2,Form(
"%d tracks found in the event",
fNTotTracks));
552 for (
Int_t i = 0; i < 3; i++) {
558 AliDebug(2,Form(
"%d cells found in the event", eventQA.
fNCells));
585 for (
Int_t i = 0; i < 3; i++) {
591 for (
Int_t i = 0; i < histEventQA->GetNdimensions(); i++) {
593 if (
title==
"Centrality %")
594 contents[i] = eventQA.
fCent;
596 contents[i] = eventQA.
fCent2;
598 contents[i] = eventQA.
fCent3;
599 else if (
title==
"V0A total multiplicity")
600 contents[i] = eventQA.
fV0A;
601 else if (
title==
"V0C total multiplicity")
602 contents[i] = eventQA.
fV0C;
603 else if (
title==
"V0A+V0C total multiplicity")
604 contents[i] = eventQA.
fV0A+eventQA.
fV0C;
605 else if (
title==
"#psi_{RP}")
606 contents[i] = eventQA.
fEP;
607 else if (
title==
"No. of tracks")
609 else if (
title==
"No. of clusters")
610 contents[i] = globalNclusters;
611 else if (
title==
"No. of cells")
613 else if (
title==
"#it{p}_{T,track}^{leading} (GeV/c)")
615 else if (
title==
"#eta_{track}^{leading}")
617 else if (
title==
"#phi_{track}^{leading}")
619 else if (
title==
"#it{E}_{cluster}^{leading} (GeV)")
620 contents[i] = globalMaxCluster.E();
621 else if (
title==
"#eta_{cluster}^{leading}")
622 contents[i] = globalMaxCluster.Eta();
623 else if (
title==
"#phi_{cluster}^{leading}")
624 contents[i] = globalMaxCluster.Phi();
625 else if (
title==
"#it{E}_{EMCal cluster}^{leading} (GeV)")
627 else if (
title==
"#eta_{EMCal cluster}^{leading}")
629 else if (
title==
"#phi_{EMCal cluster}^{leading}")
631 else if (
title==
"#it{E}_{DCal cluster}^{leading} (GeV)")
633 else if (
title==
"#phi_{DCal cluster}^{leading}")
635 else if (
title==
"#eta_{DCal cluster}^{leading}")
637 else if (
title==
"#it{E}_{PHOS cluster}^{leading} (GeV)")
639 else if (
title==
"#phi_{PHOS cluster}^{leading}")
641 else if (
title==
"#eta_{PHOS cluster}^{leading}")
644 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
647 histEventQA->Fill(contents);
663 for (
Int_t pos = 0; pos < ncells; pos++) {
681 Int_t AbsIdseed = -1;
683 for (
Int_t i = 0; i < cluster->GetNCells(); i++) {
684 if (cells->GetCellAmplitude(cluster->GetCellAbsId(i)) > Eseed) {
685 Eseed = cells->GetCellAmplitude(cluster->GetCellAbsId(i));
686 AbsIdseed = cluster->GetCellAbsId(i);
693 Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1;
694 fGeom->GetCellIndex(AbsIdseed,imod,iTower,iIphi,iIeta);
695 fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,iphi,ieta);
702 if (iphi < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
703 if (iphi > 0) absID2 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
710 if (ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2)) {
711 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
712 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
714 else if (ieta == 0 && imod%2) {
715 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
716 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1);
719 if (ieta < AliEMCALGeoParams::fgkEMCALCols-1)
720 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
722 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
725 Double_t ecell1 = cells->GetCellAmplitude(absID1);
726 Double_t ecell2 = cells->GetCellAmplitude(absID2);
727 Double_t ecell3 = cells->GetCellAmplitude(absID3);
728 Double_t ecell4 = cells->GetCellAmplitude(absID4);
730 Double_t Ecross = ecell1 + ecell2 + ecell3 + ecell4;
749 while ((clusters = static_cast<AliClusterContainer*>(nextClusColl()))) {
753 UInt_t rejectionReason = 0;
754 if (!clusters->
AcceptCluster(it.current_index(), rejectionReason)) {
755 histname = TString::Format(
"%s/fHistRejectionReason_%d", clusters->GetArrayName().Data(),
fCentBin);
756 fHistManager.
FillTH2(histname, clusters->GetRejectionReasonBitPosition(rejectionReason), it->first.E());
761 it->second->GetPosition(pos);
762 histname = TString::Format(
"%s/fHistClusPosition_%d", clusters->GetArrayName().Data(),
fCentBin);
765 histname = TString::Format(
"%s/fHistClusPhiEtaEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
768 histname = TString::Format(
"%s/fHistClusDeltaPhiEPEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
771 while (ep < 0) ep += TMath::Pi();
772 while (ep >= TMath::Pi()) ep -= TMath::Pi();
776 histname = TString::Format(
"%s/fHistNCellsEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
779 histname = TString::Format(
"%s/fHistClusTimeEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
782 histname = TString::Format(
"%s/fHistClusMCEnergyFraction_%d", clusters->GetArrayName().Data(),
fCentBin);
787 histname = TString::Format(
"%s/fHistClusEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
790 if (it->second->GetNonLinCorrEnergy() > 0.) {
791 histname = TString::Format(
"%s/fHistClusNonLinCorrEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
795 if (it->second->GetHadCorrEnergy() > 0.) {
796 histname = TString::Format(
"%s/fHistClusHadCorrEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
801 if (it->second->IsEMCAL()) {
802 Double_t phi = it->first.Phi_0_2pi();
808 histname = TString::Format(
"%s/fHistFcrossEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
812 Int_t sm =
fGeom->GetSuperModuleNumber(it->second->GetCellAbsId(0));
813 if (sm >=0 && sm < 20) {
814 histname = TString::Format(
"%s/BySM/fHistClusEnergy_SM%d_%d", clusters->GetArrayName().Data(), sm,
fCentBin);
818 AliError(Form(
"Supermodule %d does not exist!", sm));
821 else if (it->second->IsPHOS()) {
845 while ((particles = static_cast<AliParticleContainer*>(nextPartColl()))) {
849 UInt_t rejectionReason = 0;
850 if (!particles->
AcceptParticle(it.current_index(), rejectionReason)) {
851 histname = TString::Format(
"%s/fHistRejectionReason_%d", particles->GetArrayName().Data(),
fCentBin);
852 fHistManager.
FillTH2(histname, particles->GetRejectionReasonBitPosition(rejectionReason), it->first.Pt());
861 histname = TString::Format(
"%s/fHistTrPhiEtaPt_%d_0", particles->GetArrayName().Data(),
fCentBin);
865 if (it->second->GetLabel() == 0) {
867 histname = TString::Format(
"%s/fHistTrPhiEtaZeroLab_%d", particles->GetArrayName().Data(),
fCentBin);
873 histname = TString::Format(
"%s/fHistTrPtZeroLab_%d", particles->GetArrayName().Data(),
fCentBin);
879 if (it->second->GetLabel() < 0) neg++;
891 AliVTrack* vtrack =
dynamic_cast<AliVTrack*
>(it->second);
893 if (vtrack->GetTrackEtaOnEMCal() == -999 || vtrack->GetTrackPhiOnEMCal() == -999) {
894 histname = TString::Format(
"%s/fHistTrPhiEtaNonProp_%d", particles->GetArrayName().Data(),
fCentBin);
898 histname = TString::Format(
"%s/fHistTrPtNonProp_%d", particles->GetArrayName().Data(),
fCentBin);
904 histname = TString::Format(
"%s/fHistTrEmcPhiEta_%d", particles->GetArrayName().Data(),
fCentBin);
906 fHistManager.
FillTH2(histname, vtrack->GetTrackEtaOnEMCal(), vtrack->GetTrackPhiOnEMCal());
908 histname = TString::Format(
"%s/fHistTrEmcPt_%d", particles->GetArrayName().Data(),
fCentBin);
912 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", particles->GetArrayName().Data(),
fCentBin);
914 fHistManager.
FillTH2(histname, it->first.Pt(), it->first.Eta() - vtrack->GetTrackEtaOnEMCal());
916 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", particles->GetArrayName().Data(),
fCentBin);
918 fHistManager.
FillTH2(histname, it->first.Pt(), it->first.Phi_0_2pi() - vtrack->GetTrackPhiOnEMCal());
920 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", particles->GetArrayName().Data(),
fCentBin);
922 fHistManager.
FillTH2(histname, it->first.Pt(), it->first.Pt() - vtrack->GetTrackPtOnEMCal());
926 if (type >= 0 && type <= 3) {
927 histname = TString::Format(
"%s/fHistTrPhiEtaPt_%d_%d", particles->GetArrayName().Data(),
fCentBin, type);
931 AliWarning(Form(
"%s: track type %d not recognized!", GetName(), type));
936 histname = TString::Format(
"%s/fHistTrNegativeLabels_%d", particles->GetArrayName().Data(),
fCentBin);
940 histname = TString::Format(
"%s/fHistTrZeroLabels_%d", particles->GetArrayName().Data(),
fCentBin);
952 ::Error(
"AddTaskEmcalJetQA",
"No analysis manager to connect to.");
957 AliVEventHandler* handler = mgr->GetInputEventHandler();
959 ::Error(
"AddTaskEmcalJetQA",
"This task requires an input event handler");
965 if (handler->InheritsFrom(
"AliESDInputHandler")) {
968 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
974 if (ntracks ==
"usedefault") {
975 if (dataType ==
kESD) {
978 else if (dataType ==
kAOD) {
986 if (nclusters ==
"usedefault") {
987 if (dataType ==
kESD) {
988 nclusters =
"CaloClusters";
990 else if (dataType ==
kAOD) {
991 nclusters =
"caloClusters";
998 if (ncells ==
"usedefault") {
999 if (dataType ==
kESD) {
1000 ncells =
"EMCALCells";
1002 else if (dataType ==
kAOD) {
1003 ncells =
"emcalCells";
1010 TString name(
"AliAnalysisTaskEmcalJetQA");
1011 if (!ntracks.IsNull()) {
1015 if (!nclusters.IsNull()) {
1019 if (!ncells.IsNull()) {
1023 if (!suffix.IsNull() != 0) {
1032 if (ntracks ==
"mcparticles") {
1036 else if (ntracks ==
"tracks" || ntracks ==
"Tracks") {
1040 else if (!ntracks.IsNull()) {
1046 mgr->AddTask(qaTask);
1049 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
1051 TString contName = TString::Format(
"%s_histos", name.Data());
1053 if (subdir.IsNull()) {
1054 commonoutput = mgr->GetCommonFileName();
1057 commonoutput = TString::Format(
"%s:%s", mgr->GetCommonFileName(), subdir.Data());
1060 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contName.Data(),
1061 TList::Class(),AliAnalysisManager::kOutputContainer,
1063 mgr->ConnectInput (qaTask, 0, cinput1 );
1064 mgr->ConnectOutput (qaTask, 1, coutput1 );
1077 if (beam ==
kpA || beam ==
kAA) nCentBins = 4;
1078 std::vector<std::string> triggerClasses = {
"CINT7",
"CEMC7",
"CDMC7",
"EG1",
"EG2",
"EJ1",
"EJ2",
"DG1",
"DG2",
"DJ1",
"DJ2" };
1079 for (
auto triggerClass : triggerClasses) {
1081 suffix.ReplaceAll(
"-",
"_");
1085 if (runnumber == 0 || (runnumber >= 265077 && runnumber <= 999999)) {
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
Int_t fNcentBins
how many centrality bins
AliEMCALGeometry * fGeom
!emcal geometry
Float_t fMaxPt
Histogram pt limit.
EBeamType_t fBeamType
!event beam type
TList * fOutput
!output list
EDataType_t
Switch for the data type.
void FillEventQAHisto(const EventQA_t &eventQA)
Double_t fCent3
!Event centrality with method 3
TObjArray fClusterCollArray
cluster collection array
Bool_t fSeparateEMCalDCal
Separate EMCal from DCal in QA plots.
TString fCentMethod3
Centrality method 3.
Int_t fNTotTracks
!Total number of accepted tracks in current event
Double_t fEPV0
!event plane V0
bidirectional stl iterator over the EMCAL iterable container
TObjArray fParticleCollArray
particle/track collection array
Container with name, TClonesArray and cuts for particles.
AliAnalysisTaskEmcalJetQA()
Double_t GetFcross(AliVCluster *cluster, AliVCaloCells *cells)
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
AliTrackContainer * AddTrackContainer(const char *n)
void SetForceBeamType(EBeamType_t f)
void FillTH3(const char *hname, double x, double y, double z, double weight=1., Option_t *opt="")
Implementation of a task to perform basic QA on tracks and clusters.
Int_t fDoLeadingObjectPosition
Add axis for leading object position (eta-phi)
AliTLorentzVector fMaxCluster[3]
Double_t fV0CTotMult
!Event V0C total multiplicity
TString fCaloCellsName
name of calo cell collection
Int_t fNTotClusters[3]
!Total number of accepted clusters in current event (DCal/EMCal)
Bool_t fIsEmbedded
Embedded data present.
Container for particles within the EMCAL framework.
Int_t fMaxCellsInCluster
Maximum number (approx) of cells in a cluster.
Bool_t fParticleLevel
Set particle level analysis.
static AliAnalysisTaskEmcalJetQA * AddTaskEmcalJetQA(TString ntracks="usedefault", TString nclusters="usedefault", TString ncells="usedefault", TString subdir="", TString suffix="")
static Double_t fgkEMCalDCalPhiDivide
phi value used to distinguish between DCal and EMCal
EBeamType_t fForceBeamType
forced beam type
static void AddTaskEmcalJetQA_QAtrain(Int_t runnumber)
AliVCaloCells * fCaloCells
!cells
AliClusterContainer * AddClusterContainer(const char *n)
THistManager fHistManager
Histogram manager.
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
TObject * FindObject(const char *name) const
void AddAcceptedTriggerClass(const char *trigClass)
THashList * GetListOfHistograms() const
virtual ~AliAnalysisTaskEmcalJetQA()
Int_t fDoV0QA
Add V0 QA histograms.
Base task in the EMCAL framework (lighter version of AliAnalysisTaskEmcal)
Double_t Phi_0_2pi() const
void SetFilterHybridTracks(Bool_t f)
Double_t fVertex[3]
!event vertex
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
TString fCentMethod2
Centrality method 2.
virtual Bool_t AcceptCluster(Int_t i, UInt_t &rejectionReason) const
Bool_t RetrieveEventObjects()
Declaration of class AliAnalysisTaskEmcalJetQA.
ETrackFilterType_t GetTrackFilterType() const
Int_t fCentBin
!event centrality bin
virtual Bool_t AcceptParticle(const AliVParticle *vp, UInt_t &rejectionReason) const
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
virtual Bool_t RetrieveEventObjects()
void SetCaloCellsName(const char *n)
AliTLorentzVector fLeadingCluster[3]
!Leading cluster in current event (EMCal/DCal)
Int_t fDoEPQA
Add event plane QA histograms.
const AliClusterIterableMomentumContainer all_momentum() const
static EBeamType_t BeamTypeFromRunNumber(Int_t runnumber)
void UserCreateOutputObjects()
Char_t GetTrackType(const AliVTrack *track) const
void SelectPhysicalPrimaries(Bool_t s)
void SetVzRange(Double_t min, Double_t max)
AliMCParticleContainer * AddMCParticleContainer(const char *n)
Double_t fCent2
!Event centrality with method 2
Float_t fPtBinWidth
Histogram pt bin width.
Float_t fCellEnergyCut
Energy cell cut.
AliTLorentzVector fMaxTrack
THnSparse * CreateTHnSparse(const char *name, const char *title, int ndim, const int *nbins, const double *min, const double *max, Option_t *opt="")
EBeamType_t
Switch for the beam type.
AliTLorentzVector fLeadingTrack
!Leading track in current event
Double_t fV0ATotMult
!Event V0A total multiplicity
Container structure for EMCAL clusters.
AliVVZERO * fVZERO
!Event V0 object
Container for MC-true particles within the EMCAL framework.
void SetMakeGeneralHistograms(Bool_t g)
AliParticleContainer * AddParticleContainer(const char *n)
const AliParticleIterableMomentumContainer all_momentum() const
Double_t fCent
!event centrality
ClassImp(AliAnalysisTaskEmcalJetQA) AliAnalysisTaskEmcalJetQA
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="")
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry