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),
132 histname = TString::Format(
"%s/fHistTrNegativeLabels_%d", cont->GetArrayName().Data(), i);
133 title = histname +
";% of negative labels;counts";
136 histname = TString::Format(
"%s/fHistTrZeroLabels_%d", cont->GetArrayName().Data(), i);
137 title = histname +
";% of zero labels;counts";
146 histname = TString::Format(
"%s/fHistRejectionReason_%d", cont->GetArrayName().Data(), i);
147 title = histname +
";Rejection reason;#it{p}_{T,track} (GeV/#it{c});counts";
151 for (
Int_t j = 0; j < nlabels; j++) {
152 histname = TString::Format(
"%s/fHistTrPhiEtaPt_%d_%d", cont->GetArrayName().Data(), i, j);
153 title = histname +
";#eta;#phi;#it{p}_{T} (GeV/#it{c})";
154 fHistManager.
CreateTH3(histname.Data(), title.Data(), 100, -1, 1, 100, 0, TMath::TwoPi(),
nPtBins, 0,
fMaxPt);
159 histname = TString::Format(
"%s/fHistTrPhiEtaZeroLab_%d", cont->GetArrayName().Data(), i);
160 title = histname +
";#eta;#phi;counts";
163 histname = TString::Format(
"%s/fHistTrPtZeroLab_%d", cont->GetArrayName().Data(), i);
164 title = histname +
";#it{p}_{T} (GeV/#it{c});counts";
168 histname = TString::Format(
"%s/fHistTrEmcPhiEta_%d", cont->GetArrayName().Data(), i);
169 title = histname +
";#eta;#phi;counts";
172 histname = TString::Format(
"%s/fHistTrEmcPt_%d", cont->GetArrayName().Data(), i);
173 title = histname +
";#it{p}_{T} (GeV/#it{c});counts";
176 histname = TString::Format(
"%s/fHistTrPhiEtaNonProp_%d", cont->GetArrayName().Data(), i);
177 title = histname +
";#eta;#phi;counts";
180 histname = TString::Format(
"%s/fHistTrPtNonProp_%d", cont->GetArrayName().Data(), i);
181 title = histname +
";#it{p}_{T} (GeV/#it{c});counts";
184 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", cont->GetArrayName().Data(), i);
185 title = histname +
";#it{p}_{T} (GeV/#it{c});#delta#eta;counts";
188 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", cont->GetArrayName().Data(), i);
189 title = histname +
";#it{p}_{T} (GeV/#it{c});#delta#phi;counts";
192 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", cont->GetArrayName().Data(), i);
193 title = histname +
";#it{p}_{T} (GeV/#it{c});#delta#it{p}_{T} (GeV/#it{c});counts";
202 const Int_t nSM = 20;
204 for (
Int_t sm = 0; sm < nSM; sm++) {
205 histname = TString::Format(
"%s/BySM/fHistClusEnergy_SM%d_%d", cont->GetArrayName().Data(), sm, i);
206 title = histname +
";#it{E}_{cluster} (GeV);counts";
210 histname = TString::Format(
"%s/fHistRejectionReason_%d", cont->GetArrayName().Data(), i);
211 title = histname +
";Rejection reason;#it{E}_{cluster} (GeV);counts";
215 histname = TString::Format(
"%s/fHistClusPosition_%d", cont->GetArrayName().Data(), i);
216 title = histname +
";#it{x} (cm);#it{y} (cm);#it{z} (cm)";
217 fHistManager.
CreateTH3(histname.Data(), title.Data(), 50, -500, 500, 50, -500, 500, 50, -500, 500);
219 histname = TString::Format(
"%s/fHistClusPhiEtaEnergy_%d", cont->GetArrayName().Data(), i);
220 title = histname +
";#eta;#phi;#it{E}_{cluster} (GeV)";
221 fHistManager.
CreateTH3(histname.Data(), title.Data(), 100, -1, 1, 100, 0, TMath::TwoPi(),
nPtBins, 0,
fMaxPt);
224 histname = TString::Format(
"%s/fHistClusDeltaPhiEPEnergy_%d", cont->GetArrayName().Data(), i);
225 title = histname +
";#it{E}_{cluster} (GeV);#phi_{cluster} - #psi_{EP};counts";
230 histname = TString::Format(
"%s/fHistClusMCEnergyFraction_%d", cont->GetArrayName().Data(), i);
231 title = histname +
";MC fraction;counts";
235 histname = TString::Format(
"%s/fHistClusTimeEnergy_%d", cont->GetArrayName().Data(), i);
236 title = histname +
";#it{E}_{cluster} (GeV);time (s);counts";
240 while (nbins > nPtBins) nbins /= 2;
241 histname = TString::Format(
"%s/fHistNCellsEnergy_%d", cont->GetArrayName().Data(), i);
242 title = histname +
";#it{E}_{cluster} (GeV);#it{N}_{cells};counts";
245 histname = TString::Format(
"%s/fHistFcrossEnergy_%d", cont->GetArrayName().Data(), i);
246 title = histname +
";#it{E}_{cluster} (GeV);#it{F}_{cross};counts";
249 histname = TString::Format(
"%s/fHistClusEnergy_%d", cont->GetArrayName().Data(), i);
250 title = histname +
";#it{E}_{cluster} (GeV);counts";
253 histname = TString::Format(
"%s/fHistClusNonLinCorrEnergy_%d", cont->GetArrayName().Data(), i);
254 title = histname +
";#it{E}_{cluster} (GeV);counts";
257 histname = TString::Format(
"%s/fHistClusHadCorrEnergy_%d", cont->GetArrayName().Data(), i);
258 title = histname +
";#it{E}_{cluster} (GeV);counts";
265 histname = TString::Format(
"%s/fHistCellsAbsIdEnergy_%d",
fCaloCellsName.Data(), i);
266 title = histname +
";cell abs. Id;#it{E}_{cell} (GeV);counts";
269 histname = TString::Format(
"%s/fHistCellsAbsIdTime_%d",
fCaloCellsName.Data(), i);
270 title = histname +
";cell abs. Id;#it{time}_{cell} (s);counts";
282 axistitle[dim] =
"Centrality %";
289 axistitle[dim] = Form(
"Centrality %s %%",
fCentMethod2.Data());
297 axistitle[dim] = Form(
"Centrality %s %%",
fCentMethod3.Data());
305 axistitle[dim] =
"V0A total multiplicity";
311 axistitle[dim] =
"V0C total multiplicity";
318 axistitle[dim] =
"V0A+V0C total multiplicity";
326 axistitle[dim] =
"#psi_{EP}";
328 min[dim] = -TMath::Pi();
329 max[dim] = TMath::Pi();
334 if (fParticleCollArray.size() > 0) {
335 axistitle[dim] =
"No. of tracks";
348 axistitle[dim] =
"#it{p}_{T,track}^{leading} (GeV/c)";
355 axistitle[dim] =
"#eta_{track}^{leading}";
361 axistitle[dim] =
"#phi_{track}^{leading}";
364 max[dim] = TMath::TwoPi();
369 if (fClusterCollArray.size() > 0) {
370 axistitle[dim] =
"No. of clusters";
385 axistitle[dim] =
"#it{E}_{EMCal cluster}^{leading} (GeV)";
391 axistitle[dim] =
"#it{E}_{DCal cluster}^{leading} (GeV)";
397 axistitle[dim] =
"#it{E}_{PHOS cluster}^{leading} (GeV)";
404 axistitle[dim] =
"#eta_{EMCal cluster}^{leading}";
410 axistitle[dim] =
"#phi_{EMCal cluster}^{leading}";
413 max[dim] = TMath::TwoPi();
416 axistitle[dim] =
"#eta_{DCal cluster}^{leading}";
422 axistitle[dim] =
"#phi_{DCal cluster}^{leading}";
425 max[dim] = TMath::TwoPi();
428 axistitle[dim] =
"#eta_{PHOS cluster}^{leading}";
434 axistitle[dim] =
"#phi_{PHOS cluster}^{leading}";
437 max[dim] = TMath::TwoPi();
442 axistitle[dim] =
"#it{E}_{cluster}^{leading} (GeV)";
449 axistitle[dim] =
"#eta_{cluster}^{leading}";
455 axistitle[dim] =
"#phi_{cluster}^{leading}";
458 max[dim] = TMath::TwoPi();
465 axistitle[dim] =
"No. of cells";
470 max[dim] = 10000-0.5;
482 for (
Int_t i = 0; i < dim; i++)
483 hn->GetAxis(i)->SetTitle(axistitle[i]);
503 fVZERO = InputEvent()->GetVZEROData();
505 AliError(
"AliVVZERO not available");
519 AliCentrality *aliCent = InputEvent()->GetCentrality();
545 AliDebug(2,Form(
"%d tracks found in the event",
fNTotTracks));
550 for (
Int_t i = 0; i < 3; i++) {
556 AliDebug(2,Form(
"%d cells found in the event", eventQA.
fNCells));
583 for (
Int_t i = 0; i < 3; i++) {
589 for (
Int_t i = 0; i < histEventQA->GetNdimensions(); i++) {
591 if (
title==
"Centrality %")
592 contents[i] = eventQA.
fCent;
594 contents[i] = eventQA.
fCent2;
596 contents[i] = eventQA.
fCent3;
597 else if (
title==
"V0A total multiplicity")
598 contents[i] = eventQA.
fV0A;
599 else if (
title==
"V0C total multiplicity")
600 contents[i] = eventQA.
fV0C;
601 else if (
title==
"V0A+V0C total multiplicity")
602 contents[i] = eventQA.
fV0A+eventQA.
fV0C;
603 else if (
title==
"#psi_{RP}")
604 contents[i] = eventQA.
fEP;
605 else if (
title==
"No. of tracks")
607 else if (
title==
"No. of clusters")
608 contents[i] = globalNclusters;
609 else if (
title==
"No. of cells")
611 else if (
title==
"#it{p}_{T,track}^{leading} (GeV/c)")
613 else if (
title==
"#eta_{track}^{leading}")
615 else if (
title==
"#phi_{track}^{leading}")
617 else if (
title==
"#it{E}_{cluster}^{leading} (GeV)")
618 contents[i] = globalMaxCluster.E();
619 else if (
title==
"#eta_{cluster}^{leading}")
620 contents[i] = globalMaxCluster.Eta();
621 else if (
title==
"#phi_{cluster}^{leading}")
622 contents[i] = globalMaxCluster.Phi();
623 else if (
title==
"#it{E}_{EMCal cluster}^{leading} (GeV)")
625 else if (
title==
"#eta_{EMCal cluster}^{leading}")
627 else if (
title==
"#phi_{EMCal cluster}^{leading}")
629 else if (
title==
"#it{E}_{DCal cluster}^{leading} (GeV)")
631 else if (
title==
"#phi_{DCal cluster}^{leading}")
633 else if (
title==
"#eta_{DCal cluster}^{leading}")
635 else if (
title==
"#it{E}_{PHOS cluster}^{leading} (GeV)")
637 else if (
title==
"#phi_{PHOS cluster}^{leading}")
639 else if (
title==
"#eta_{PHOS cluster}^{leading}")
642 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
645 histEventQA->Fill(contents);
661 for (
Int_t pos = 0; pos < ncells; pos++) {
679 Int_t AbsIdseed = -1;
681 for (
Int_t i = 0; i < cluster->GetNCells(); i++) {
682 if (cells->GetCellAmplitude(cluster->GetCellAbsId(i)) > Eseed) {
683 Eseed = cells->GetCellAmplitude(cluster->GetCellAbsId(i));
684 AbsIdseed = cluster->GetCellAbsId(i);
691 Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1;
692 fGeom->GetCellIndex(AbsIdseed,imod,iTower,iIphi,iIeta);
693 fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,iphi,ieta);
700 if (iphi < AliEMCALGeoParams::fgkEMCALRows-1) absID1 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
701 if (iphi > 0) absID2 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
708 if (ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2)) {
709 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
710 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
712 else if (ieta == 0 && imod%2) {
713 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
714 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1);
717 if (ieta < AliEMCALGeoParams::fgkEMCALCols-1)
718 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
720 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
723 Double_t ecell1 = cells->GetCellAmplitude(absID1);
724 Double_t ecell2 = cells->GetCellAmplitude(absID2);
725 Double_t ecell3 = cells->GetCellAmplitude(absID3);
726 Double_t ecell4 = cells->GetCellAmplitude(absID4);
728 Double_t Ecross = ecell1 + ecell2 + ecell3 + ecell4;
750 UInt_t rejectionReason = 0;
751 if (!clusters->
AcceptCluster(it.current_index(), rejectionReason)) {
752 histname = TString::Format(
"%s/fHistRejectionReason_%d", clusters->GetArrayName().Data(),
fCentBin);
753 fHistManager.
FillTH2(histname, clusters->GetRejectionReasonBitPosition(rejectionReason), it->first.E());
758 it->second->GetPosition(pos);
759 histname = TString::Format(
"%s/fHistClusPosition_%d", clusters->GetArrayName().Data(),
fCentBin);
762 histname = TString::Format(
"%s/fHistClusPhiEtaEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
765 histname = TString::Format(
"%s/fHistClusDeltaPhiEPEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
768 while (ep < 0) ep += TMath::Pi();
769 while (ep >= TMath::Pi()) ep -= TMath::Pi();
773 histname = TString::Format(
"%s/fHistNCellsEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
776 histname = TString::Format(
"%s/fHistClusTimeEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
779 histname = TString::Format(
"%s/fHistClusMCEnergyFraction_%d", clusters->GetArrayName().Data(),
fCentBin);
784 histname = TString::Format(
"%s/fHistClusEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
787 if (it->second->GetNonLinCorrEnergy() > 0.) {
788 histname = TString::Format(
"%s/fHistClusNonLinCorrEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
792 if (it->second->GetHadCorrEnergy() > 0.) {
793 histname = TString::Format(
"%s/fHistClusHadCorrEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
798 if (it->second->IsEMCAL()) {
799 Double_t phi = it->first.Phi_0_2pi();
805 histname = TString::Format(
"%s/fHistFcrossEnergy_%d", clusters->GetArrayName().Data(),
fCentBin);
809 Int_t sm =
fGeom->GetSuperModuleNumber(it->second->GetCellAbsId(0));
810 if (sm >=0 && sm < 20) {
811 histname = TString::Format(
"%s/BySM/fHistClusEnergy_SM%d_%d", clusters->GetArrayName().Data(), sm,
fCentBin);
815 AliError(Form(
"Supermodule %d does not exist!", sm));
818 else if (it->second->IsPHOS()) {
844 UInt_t rejectionReason = 0;
845 if (!particles->
AcceptParticle(it.current_index(), rejectionReason)) {
846 histname = TString::Format(
"%s/fHistRejectionReason_%d", particles->GetArrayName().Data(),
fCentBin);
847 fHistManager.
FillTH2(histname, particles->GetRejectionReasonBitPosition(rejectionReason), it->first.Pt());
856 histname = TString::Format(
"%s/fHistTrPhiEtaPt_%d_0", particles->GetArrayName().Data(),
fCentBin);
860 if (it->second->GetLabel() == 0) {
862 histname = TString::Format(
"%s/fHistTrPhiEtaZeroLab_%d", particles->GetArrayName().Data(),
fCentBin);
868 histname = TString::Format(
"%s/fHistTrPtZeroLab_%d", particles->GetArrayName().Data(),
fCentBin);
874 if (it->second->GetLabel() < 0) neg++;
886 AliVTrack* vtrack =
dynamic_cast<AliVTrack*
>(it->second);
888 if (vtrack->GetTrackEtaOnEMCal() == -999 || vtrack->GetTrackPhiOnEMCal() == -999) {
889 histname = TString::Format(
"%s/fHistTrPhiEtaNonProp_%d", particles->GetArrayName().Data(),
fCentBin);
893 histname = TString::Format(
"%s/fHistTrPtNonProp_%d", particles->GetArrayName().Data(),
fCentBin);
899 histname = TString::Format(
"%s/fHistTrEmcPhiEta_%d", particles->GetArrayName().Data(),
fCentBin);
901 fHistManager.
FillTH2(histname, vtrack->GetTrackEtaOnEMCal(), vtrack->GetTrackPhiOnEMCal());
903 histname = TString::Format(
"%s/fHistTrEmcPt_%d", particles->GetArrayName().Data(),
fCentBin);
907 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", particles->GetArrayName().Data(),
fCentBin);
909 fHistManager.
FillTH2(histname, it->first.Pt(), it->first.Eta() - vtrack->GetTrackEtaOnEMCal());
911 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", particles->GetArrayName().Data(),
fCentBin);
913 fHistManager.
FillTH2(histname, it->first.Pt(), it->first.Phi_0_2pi() - vtrack->GetTrackPhiOnEMCal());
915 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", particles->GetArrayName().Data(),
fCentBin);
917 fHistManager.
FillTH2(histname, it->first.Pt(), it->first.Pt() - vtrack->GetTrackPtOnEMCal());
921 if (type >= 0 && type <= 3) {
922 histname = TString::Format(
"%s/fHistTrPhiEtaPt_%d_%d", particles->GetArrayName().Data(),
fCentBin, type);
926 AliWarning(Form(
"%s: track type %d not recognized!", GetName(), type));
931 histname = TString::Format(
"%s/fHistTrNegativeLabels_%d", particles->GetArrayName().Data(),
fCentBin);
935 histname = TString::Format(
"%s/fHistTrZeroLabels_%d", particles->GetArrayName().Data(),
fCentBin);
947 ::Error(
"AddTaskEmcalJetQA",
"No analysis manager to connect to.");
952 AliVEventHandler* handler = mgr->GetInputEventHandler();
954 ::Error(
"AddTaskEmcalJetQA",
"This task requires an input event handler");
960 if (handler->InheritsFrom(
"AliESDInputHandler")) {
963 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
969 if (ntracks ==
"usedefault") {
970 if (dataType ==
kESD) {
973 else if (dataType ==
kAOD) {
981 if (nclusters ==
"usedefault") {
982 if (dataType ==
kESD) {
983 nclusters =
"CaloClusters";
985 else if (dataType ==
kAOD) {
986 nclusters =
"caloClusters";
993 if (ncells ==
"usedefault") {
994 if (dataType ==
kESD) {
995 ncells =
"EMCALCells";
997 else if (dataType ==
kAOD) {
998 ncells =
"emcalCells";
1005 TString name(
"AliAnalysisTaskEmcalJetQA");
1006 if (!ntracks.IsNull()) {
1010 if (!nclusters.IsNull()) {
1014 if (!ncells.IsNull()) {
1018 if (!suffix.IsNull() != 0) {
1030 mgr->AddTask(qaTask);
1033 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
1035 TString contName = TString::Format(
"%s_histos", name.Data());
1037 if (subdir.IsNull()) {
1038 commonoutput = mgr->GetCommonFileName();
1041 commonoutput = TString::Format(
"%s:%s", mgr->GetCommonFileName(), subdir.Data());
1044 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contName.Data(),
1045 TList::Class(),AliAnalysisManager::kOutputContainer,
1047 mgr->ConnectInput (qaTask, 0, cinput1 );
1048 mgr->ConnectOutput (qaTask, 1, coutput1 );
1061 if (beam ==
kpA || beam ==
kAA) nCentBins = 4;
1062 std::vector<std::string> triggerClasses = {
"CINT7",
"CEMC7",
"CDMC7",
"EG1",
"EG2",
"EJ1",
"EJ2",
"DG1",
"DG2",
"DJ1",
"DJ2" };
1063 for (
auto triggerClass : triggerClasses) {
1065 suffix.ReplaceAll(
"-",
"_");
1069 if (runnumber == 0 || (runnumber >= 265077 && runnumber <= 999999)) {
void SetRejectionReasonLabels(TAxis *axis)
AliClusterContainer * AddClusterContainer(std::string branchName, std::string contName="")
void UserCreateOutputObjects()
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
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
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="")
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
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
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
Int_t GetNCentBins() const
static EBeamType_t BeamTypeFromRunNumber(Int_t runnumber)
AliParticleContainer * AddParticleContainer(std::string branchName, std::string contName="")
void UserCreateOutputObjects()
Char_t GetTrackType(const AliVTrack *track) const
std::map< std::string, AliParticleContainer * > fParticleCollArray
particle/track collection array
void SetVzRange(Double_t min, Double_t max)
Double_t fCent2
!Event centrality with method 2
Float_t fPtBinWidth
Histogram pt bin width.
Float_t fCellEnergyCut
Energy cell cut.
AliTLorentzVector fMaxTrack
std::map< std::string, AliClusterContainer * > fClusterCollArray
cluster collection array
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
void SetMakeGeneralHistograms(Bool_t g)
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