18 #include <TClonesArray.h>
21 #include <THnSparse.h>
24 #include <Riostream.h>
28 #include <AliVEventHandler.h>
29 #include <AliAnalysisManager.h>
33 #include "AliCentrality.h"
34 #include "AliVCluster.h"
35 #include "AliVParticle.h"
36 #include "AliVTrack.h"
38 #include "AliEMCALGeometry.h"
39 #include "AliEMCALGeoParams.h"
40 #include "AliESDtrack.h"
41 #include "AliAODTrack.h"
42 #include "AliAODMCParticle.h"
46 #include "AliMCEvent.h"
47 #include "AliGenPythiaEventHeader.h"
48 #include "AliAODMCHeader.h"
49 #include "AliPHOSGeometry.h"
50 #include "AliOADBContainer.h"
67 fGeneratorLevelName(),
78 fNPtRelDiffHistBins(0),
79 fPtRelDiffHistBins(0),
84 fHistManager(
"AliAnalysisTaskPWGJEQA"),
89 fRejectOutlierEvents(kFALSE),
105 fCellEnergyCut(0.05),
110 fGeneratorLevelName(),
112 fDetectorLevelName(),
121 fNPtRelDiffHistBins(0),
122 fPtRelDiffHistBins(0),
125 fNIntegerHistBins(0),
132 fRejectOutlierEvents(kFALSE),
167 while ((obj = next())) {
192 histname = TString::Format(
"%s/fHistCellEnergy",
fCaloCellsName.Data());
193 title = histname +
";#it{E}_{cell} (GeV);counts";
196 histname = TString::Format(
"%s/fProfCellAbsIdEnergy",
fCaloCellsName.Data());
197 title = histname +
";cell absId;<#it{E}_{cell}> (GeV)";
200 histname = TString::Format(
"%s/fHistCellTime",
fCaloCellsName.Data());
201 title = histname +
";#it{t}_{cell} (s);counts";
204 histname = TString::Format(
"%s/fProfCellAbsIdTime",
fCaloCellsName.Data());
205 title = histname +
";cell absId;<#it{t}_{cell}> (s)";
208 histname = TString::Format(
"%s/fHistCellEvsTime",
fCaloCellsName.Data());
209 title = histname +
";<#it{t}_{cell}> (s);<#it{E}_{cell}> (GeV)";
218 AliEmcalContainer* cont = 0;
224 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) {
226 histname = TString::Format(
"%s/fHistClusterRejectionReason", cont->GetArrayName().Data());
227 title = histname +
";Rejection reason;#it{E}_{clus} (GeV/);counts";
231 const Int_t nEmcalSM = 20;
232 for (
Int_t sm = 0; sm < nEmcalSM; sm++) {
233 histname = TString::Format(
"%s/BySM/hEmcalClusEnergy_SM%d", cont->GetArrayName().Data(), sm);
234 title = histname +
";#it{E}_{cluster} (GeV);counts";
238 for (
Int_t sm = 0; sm < 6; sm++) {
239 histname = TString::Format(
"%s/BySM/hPhosClusEnergy_SM%d", cont->GetArrayName().Data(), sm);
240 title = histname +
";#it{E}_{cluster} (GeV);counts";
253 title[dim] =
"Centrality %";
261 title[dim] =
"#it{E}_{clus} (GeV)";
282 title[dim] =
"cluster type";
289 TString thnname = TString::Format(
"%s/clusterObservables", cont->GetArrayName().Data());
291 for (
Int_t i = 0; i < dim; i++) {
292 hn->GetAxis(i)->SetTitle(title[i]);
293 hn->SetBinEdges(i, binEdges[i]);
303 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
316 axisTitle[dim] =
"Centrality (%)";
324 axisTitle[dim] =
"#eta_{jet}";
331 axisTitle[dim] =
"#phi_{jet} (rad)";
338 axisTitle[dim] =
"#it{p}_{T} (GeV/#it{c})";
339 nbins[dim] = TMath::CeilNint(
fMaxPt/3);
346 axisTitle[dim] =
"#it{p}_{T}^{corr} (GeV/#it{c})";
347 nbins[dim] = TMath::CeilNint(
fMaxPt/3);
348 min[dim] = -
fMaxPt/2 + 25;
354 axisTitle[dim] =
"#it{p}_{T,particle}^{leading} (GeV/#it{c})";
361 TString thnname = TString::Format(
"%s/fHistJetObservables", jets->GetArrayName().Data());
363 for (
Int_t i = 0; i < dim; i++) {
364 hn->GetAxis(i)->SetTitle(axisTitle[i]);
365 hn->SetBinEdges(i, binEdges[i]);
371 histname = TString::Format(
"%s/fHistJetRejectionReason", jets->GetArrayName().Data());
372 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
377 histname = TString::Format(
"%s/fHistRhoVsCent", jets->GetArrayName().Data());
378 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
397 axistitle[dim] =
"Centrality %";
406 axistitle[dim] =
"No. of tracks";
410 max[dim] = 10000-0.5;
421 axistitle[dim] =
"#it{p}_{T,track}^{leading} (GeV/c)";
430 axistitle[dim] =
"No. of clusters";
446 axistitle[dim] =
"#it{E}_{cluster}^{leading} (GeV)";
455 for (
Int_t i = 0; i < dim; i++) {
456 hn->GetAxis(i)->SetTitle(axistitle[i]);
457 hn->SetBinEdges(i, binEdges[i]);
462 TString title = histname +
";#it{p}_{T,hard} (GeV/c);counts";
466 hTrials->GetXaxis()->SetBinLabel(1,
"#sum{ntrials}");
469 hxsection->GetXaxis()->SetBinLabel(1,
"<#sigma>");
487 title[dim] =
"Centrality %";
495 title[dim] =
"#it{p}_{T} (GeV/#it{c})";
516 title[dim] =
"track type";
523 title[dim] =
"#sigma(#it{p}_{T}) / #it{p}_{T}";
531 for (
Int_t i = 0; i < dim; i++) {
532 hn->GetAxis(i)->SetTitle(title[i]);
533 hn->SetBinEdges(i, binEdges[i]);
549 title[dim] =
"Centrality %";
557 title[dim] =
"#it{p}_{T} (GeV/#it{c})";
578 title[dim] =
"Findable";
586 for (
Int_t i = 0; i < dim; i++) {
587 hn->GetAxis(i)->SetTitle(title[i]);
588 hn->SetBinEdges(i, binEdges[i]);
603 title[dim] =
"Centrality %";
611 title[dim] =
"#it{p}_{T}^{gen} (GeV/#it{c})";
618 title[dim] =
"#eta^{gen}";
625 title[dim] =
"#phi^{gen}";
632 title[dim] =
"#it{p}_{T}^{det} (GeV/#it{c})";
639 title[dim] =
"#eta^{det}";
646 title[dim] =
"#phi^{det}";
653 title[dim] =
"(#it{p}_{T}^{gen} - #it{p}_{T}^{det}) / #it{p}_{T}^{gen}";
660 title[dim] =
"track type";
668 for (
Int_t i = 0; i < dim; i++) {
669 hn->GetAxis(i)->SetTitle(title[i]);
670 hn->SetBinEdges(i, binEdges[i]);
734 Int_t runNum = InputEvent()->GetRunNumber();
736 fPHOSGeo = AliPHOSGeometry::GetInstance(
"IHEP");
738 fPHOSGeo = AliPHOSGeometry::GetInstance(
"Run2");
741 AliOADBContainer geomContainer(
"phosGeo");
742 geomContainer.InitFromFile(
"$ALICE_PHYSICS/OADB/PHOS/PHOSMCGeometry.root",
"PHOSMCRotationMatrixes");
743 TObjArray* matrixes = (
TObjArray*)geomContainer.GetObject(runNum,
"PHOSRotationMatrixes");
744 for(
Int_t mod=0; mod<6; mod++) {
745 if(!matrixes->At(mod))
continue;
746 fPHOSGeo->SetMisalMatrix(((TGeoHMatrix*)matrixes->At(mod)),mod);
747 printf(
".........Adding Matrix(%d), geo=%p\n",mod,
fPHOSGeo);
748 ((TGeoHMatrix*)matrixes->At(mod))->
Print();
760 AliGenPythiaEventHeader* pygen;
762 pygen =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
765 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
767 for (
UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
768 pygen =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
782 Int_t nTriggerJets = pygen->NTriggerJets();
784 for (
Int_t ijet = 0; ijet< nTriggerJets; ijet++) {
785 pygen->TriggerJet(ijet, tmpjet);
786 jet.SetPxPyPzE(tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3]);
812 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
814 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
822 TFile *curfile = tree->GetCurrentFile();
824 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
829 if (chain) tree = chain->GetTree();
863 track = trackIterator.second;
870 AliESDtrack *esdTrack =
dynamic_cast<AliESDtrack*
>(track);
871 if (esdTrack) sigma = TMath::Sqrt(esdTrack->GetSigma1Pt2());
875 AliAODTrack *aodtrack =
dynamic_cast<AliAODTrack*
>(track);
876 if(!aodtrack) AliFatal(
"Not a standard AOD");
878 AliExternalTrackParam exParam;
882 aodtrack->GetCovMatrix(cov);
884 aodtrack->PxPyPz(pxpypz);
886 aodtrack->GetXYZ(xyz);
887 Short_t sign = aodtrack->Charge();
888 exParam.Set(xyz,pxpypz,cov,sign);
890 sigma = TMath::Sqrt(exParam.GetSigma1Pt2());
894 Int_t label = TMath::Abs(track->GetLabel());
897 if (label==0 || track->GetGeneratorIndex() == 0) mcGen = 0;
904 if (part->GetGeneratorIndex() == 0) {
905 Int_t pdg = TMath::Abs(part->PdgCode());
907 if (pdg == 211 || pdg == 2212 || pdg == 321 || pdg == 11 || pdg == 13) {
915 AliError(Form(
"Track %d has type %d not recognized!",
fDetectorLevel->GetCurrentID(), type));
920 AliAODMCParticle* part;
922 part = partIterator.second;
927 if (part->GetGeneratorIndex() == 0) mcGen = 0;
929 Int_t pdg = TMath::Abs(part->PdgCode());
931 if (pdg == 211 || pdg == 2212 || pdg == 321 || pdg == 11 || pdg == 13) findable = 1;
950 for (
Int_t pos = 0; pos < ncells; pos++) {
976 while ((clusters = static_cast<AliClusterContainer*>(nextClusColl()))) {
981 UInt_t rejectionReason = 0;
982 if (!clusters->
AcceptCluster(it.current_index(), rejectionReason)) {
983 histname = TString::Format(
"%s/fHistClusterRejectionReason", clusters->GetArrayName().Data());
984 fHistManager.
FillTH2(histname, clusters->GetRejectionReasonBitPosition(rejectionReason), it->first.E());
990 if (it->second->IsEMCAL()) {
991 Double_t phi = it->first.Phi_0_2pi();
995 }
else if (isDcal == 1) {
1002 Int_t sm =
fGeom->GetSuperModuleNumber(it->second->GetCellAbsId(0));
1003 if (sm >=0 && sm < 20) {
1004 histname = TString::Format(
"%s/BySM/hEmcalClusEnergy_SM%d", clusters->GetArrayName().Data(), sm);
1008 AliError(Form(
"Supermodule %d does not exist!", sm));
1011 }
else if (it->second->GetType() == AliVCluster::kPHOSNeutral){
1019 fPHOSGeo->AbsToRelNumbering(it->second->GetCellAbsId(0), relid);
1020 Int_t sm = relid[0];
1021 if (sm >=0 && sm < 6) {
1022 histname = TString::Format(
"%s/BySM/hPhosClusEnergy_SM%d", clusters->GetArrayName().Data(), sm);
1026 AliError(Form(
"Supermodule %d does not exist!", sm));
1032 histname = TString::Format(
"%s/clusterObservables", clusters->GetArrayName().Data());
1034 if (!histClusterObservables)
return;
1035 for (
Int_t i = 0; i < histClusterObservables->GetNdimensions(); i++) {
1036 TString title(histClusterObservables->GetAxis(i)->GetTitle());
1037 if (
title==
"Centrality %")
1038 contents[i] =
fCent;
1039 else if (
title==
"#it{E}_{clus} (GeV)")
1040 contents[i] = it->first.E();
1041 else if (
title==
"#eta")
1042 contents[i] = it->first.Eta();
1043 else if (
title==
"#phi")
1044 contents[i] = it->first.Phi_0_2pi();
1045 else if (
title==
"cluster type")
1046 contents[i] = clusType;
1048 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1050 histClusterObservables->Fill(contents);
1062 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1066 histname = TString::Format(
"%s/fHistRhoVsCent", jets->GetArrayName().Data());
1070 for (
auto jet : jets->
all()) {
1072 UInt_t rejectionReason = 0;
1073 if (!jets->
AcceptJet(jet, rejectionReason)) {
1074 histname = TString::Format(
"%s/fHistJetRejectionReason", jets->GetArrayName().Data());
1075 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1080 Float_t corrPt = jet->Pt() - rhoVal * jet->Area();
1082 TLorentzVector leadPart;
1086 histname = TString::Format(
"%s/fHistJetObservables", jets->GetArrayName().Data());
1088 if (!histJetObservables)
return;
1089 for (
Int_t i = 0; i < histJetObservables->GetNdimensions(); i++) {
1090 TString title(histJetObservables->GetAxis(i)->GetTitle());
1091 if (
title==
"Centrality (%)")
1092 contents[i] =
fCent;
1093 else if (
title==
"#eta_{jet}")
1094 contents[i] = jet->Eta();
1095 else if (
title==
"#phi_{jet} (rad)")
1096 contents[i] = jet->Phi_0_2pi();
1097 else if (
title==
"#it{p}_{T} (GeV/#it{c})")
1098 contents[i] = jet->Pt();
1099 else if (
title==
"#it{p}_{T}^{MC} (GeV/#it{c})")
1100 contents[i] = jet->MCPt();
1101 else if (
title==
"#it{p}_{T}^{corr} (GeV/#it{c})")
1102 contents[i] = corrPt;
1103 else if (
title==
"#it{p}_{T,particle}^{leading} (GeV/#it{c})")
1104 contents[i] = ptLeading;
1106 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1108 histJetObservables->Fill(contents);
1118 for (
Int_t i = 0; i < 3; i++) {
1130 for (
Int_t i = 0; i < 3; i++) {
1136 for (
Int_t i = 0; i < histEventQA->GetNdimensions(); i++) {
1138 if (
title==
"Centrality %")
1139 contents[i] = eventQA.
fCent;
1140 else if (
title==
"No. of tracks")
1142 else if (
title==
"No. of clusters")
1143 contents[i] = globalNclusters;
1144 else if (
title==
"#it{p}_{T,track}^{leading} (GeV/c)")
1146 else if (
title==
"#it{E}_{cluster}^{leading} (GeV)")
1147 contents[i] = globalMaxCluster.E();
1149 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1152 histEventQA->Fill(contents);
1162 Double_t sigma1OverPt, Byte_t trackType)
1167 if (!thnTracks)
return;
1168 for (
Int_t i = 0; i < thnTracks->GetNdimensions(); i++) {
1170 if (
title==
"Centrality %")
1172 else if (
title==
"#it{p}_{T} (GeV/#it{c})")
1173 contents[i] = trackPt;
1174 else if (
title==
"#eta")
1175 contents[i] = trackEta;
1176 else if (
title==
"#phi")
1177 contents[i] = trackPhi;
1178 else if (
title==
"#sigma(1/#it{p}_{T}) (GeV/#it{c})^{-1}")
1179 contents[i] = sigma1OverPt;
1180 else if (
title==
"#sigma(#it{p}_{T}) / #it{p}_{T}")
1181 contents[i] = sigma1OverPt*trackPt;
1182 else if (
title==
"track type")
1183 contents[i] = trackType;
1185 AliWarning(Form(
"Unable to fill dimension %s of histogram %s!",
title.Data(), thnTracks->GetName()));
1188 thnTracks->Fill(contents);
1197 if (!thnTracks_PhysPrim)
return;
1198 for (
Int_t i = 0; i < thnTracks_PhysPrim->GetNdimensions(); i++) {
1199 TString title(thnTracks_PhysPrim->GetAxis(i)->GetTitle());
1200 if (
title==
"Centrality %")
1202 else if (
title==
"#it{p}_{T} (GeV/#it{c})")
1203 contents[i] = partPt;
1204 else if (
title==
"#eta")
1205 contents[i] = partEta;
1206 else if (
title==
"#phi")
1207 contents[i] = partPhi;
1208 else if (
title==
"Findable")
1209 contents[i] = findable;
1211 AliWarning(Form(
"Unable to fill dimension %s of histogram %s!",
title.Data(), thnTracks_PhysPrim->GetName()));
1214 thnTracks_PhysPrim->Fill(contents);
1224 if (!thnTracks_Matched)
return;
1225 for (
Int_t i = 0; i < thnTracks_Matched->GetNdimensions(); i++) {
1226 TString title(thnTracks_Matched->GetAxis(i)->GetTitle());
1227 if (
title==
"Centrality %")
1229 else if (
title==
"#it{p}_{T}^{gen} (GeV/#it{c})")
1230 contents[i] = partPt;
1231 else if (
title==
"#eta^{gen}")
1232 contents[i] = partEta;
1233 else if (
title==
"#phi^{gen}")
1234 contents[i] = partPhi;
1235 else if (
title==
"#it{p}_{T}^{det} (GeV/#it{c})")
1236 contents[i] = trackPt;
1237 else if (
title==
"#eta^{det}")
1238 contents[i] = trackEta;
1239 else if (
title==
"#phi^{det}")
1240 contents[i] = trackPhi;
1241 else if (
title==
"(#it{p}_{T}^{gen} - #it{p}_{T}^{det}) / #it{p}_{T}^{gen}")
1242 contents[i] = (partPt - trackPt) / partPt;
1243 else if (
title==
"(#it{p}_{T}^{gen} - #it{p}_{T}^{det}) / #it{p}_{T}^{det}")
1244 contents[i] = (partPt - trackPt) / trackPt;
1245 else if (
title==
"track type")
1248 AliWarning(Form(
"Unable to fill dimension %s of histogram %s!",
title.Data(), thnTracks_Matched->GetName()));
1251 thnTracks_Matched->Fill(contents);
void FillCellHistograms()
void AllocateMatchedParticlesTHnSparse()
Double_t * fEtaHistBins
number of eta bins
Double_t * fPtResHistBins
number of pt res bins
void Print(std::ostream &o, const char *name, Double_t dT, Double_t dVM, Double_t alldT, Double_t alldVM)
TObjArray fClusterCollArray
cluster collection array
Bool_t fDoEventQA
Set whether to enable event QA.
Double_t GetRhoVal() const
const TString & GetRhoName() const
Int_t fNEtaHistBins
pt bins
Int_t fNPtResHistBins
pt relative difference bins
AliTrackContainer * fDetectorLevel
generator level container
Int_t fNPhiHistBins
eta bins
void AllocateEventQAHistograms()
Bool_t RetrieveEventObjects()
const AliMCParticleIterableMomentumContainer accepted_momentum() const
bidirectional stl iterator over the EMCAL iterable container
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
Double_t fPtHard
!event pt hard
void AllocateJetHistograms()
AliAnalysisTaskPWGJEQA()
Default constructor for ROOT I/O purposes.
Bool_t fGeneralHistograms
whether or not it should fill some general histograms
THistManager fHistManager
! phos geometry
Bool_t fRejectOutlierEvents
flag to reject pythia pt-hard jet outlier events
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
Int_t fNTotClusters[3]
!Total number of accepted clusters in current event (DCal/EMCal)
Bool_t RetrieveEventObjects()
AliTLorentzVector fMaxCluster[3]
TString fDetectorLevelName
detector level container name
AliTLorentzVector fMaxTrack
Bool_t fDoTrackQA
Set whether to enable track QA.
void FillTrackHistograms()
TObjArray fParticleCollArray
particle/track collection array
void FillClusterHistograms()
Double_t * fPtHistBins
number of pt bins
void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet *jet) const
void AllocateDetectorLevelTHnSparse()
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 FillEventQAHistograms()
void CreateTProfile(const char *name, const char *title, int nbinsX, double xmin, double xmax, Option_t *opt="")
THashList * GetListOfHistograms() const
Double_t GetLeadingHadronPt(const AliEmcalJet *jet) const
AliEMCALGeometry * fGeom
!emcal geometry
AliPHOSGeometry * fPHOSGeo
integer bins
void FillDetectorLevelTHnSparse(Double_t cent, Double_t trackEta, Double_t trackPhi, Double_t trackPt, Double_t sigma1OverPt, Byte_t trackType)
virtual AliAODMCParticle * GetAcceptMCParticleWithLabel(Int_t lab)
Int_t fNTotTracks
!Total number of accepted tracks in current event
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
Float_t fCellEnergyCut
Energy cell cut.
BeamType fForceBeamType
forced beam type
virtual Bool_t AcceptCluster(Int_t i, UInt_t &rejectionReason) const
Double_t * fPtRelDiffHistBins
number of pt relative difference bins
void AllocateClusterHistograms()
void FillProfile(const char *name, double x, double y, double weight=1.)
Declaration of class AliAnalysisTaskPWGJEQA.
Double_t fCent
!event centrality
Int_t fNPtHistBins
detector level container
TString fCaloCellsName
name of calo cell collection
Int_t fNIntegerHistBins
pt res bins
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Bool_t PythiaInfoFromFile(const char *currFile, Float_t &fXsec, Float_t &fTrials, Int_t &pthard)
TObjArray fJetCollArray
jet collection array
AliVCaloCells * fCaloCells
!cells
AliRhoParameter * GetRhoParameter()
Int_t fNCentHistBins
phi bins
Double_t * fIntegerHistBins
number of integer bins
const AliClusterIterableMomentumContainer all_momentum() const
void FillMatchedParticlesTHnSparse(Double_t cent, Double_t partEta, Double_t partPhi, Double_t partPt, Double_t trackEta, Double_t trackPhi, Double_t trackPt, Byte_t trackType)
void FillGeneratorLevelTHnSparse(Double_t cent, Double_t partEta, Double_t partPhi, Double_t partPt, Byte_t findable)
static Double_t * GenerateFixedBinArray(Int_t n, Double_t min, Double_t max)
void AllocateCellHistograms()
AliTLorentzVector fLeadingTrack
!Leading track in current event
Float_t GetJetRadius() const
void UserCreateOutputObjects()
AliEmcalList * fOutput
!output list
AliMCParticleContainer * GetMCParticleContainer(Int_t i=0) const
Char_t GetTrackType(const AliVTrack *track) const
Bool_t fIsEsd
!whether it's an ESD analysis
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
void GenerateHistoBins()
Generate histogram binning arrays.
AliTrackContainer * GetTrackContainer(Int_t i=0) const
Bool_t fDoCaloQA
Set whether to enable cell/cluster QA.
TH1 * fHistEventRejection
!book keep reasons for rejecting event
void SetMakeGeneralHistograms(Bool_t g)
This is a task used to do basic PWGJE QA on tracks, clusters, and jets. Based on code from Salvatore ...
Base task in the EMCAL jet framework.
Bool_t fIsPtHard
flag to enable pt-hard histos and make available outlier cut
const AliTrackIterableMomentumContainer accepted_momentum() const
Bool_t fDoJetQA
Set whether to enable jet QA.
TString fGeneratorLevelName
generator level container name
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
Float_t fMaxPt
Histogram pt limit.
AliMCParticleContainer * fGeneratorLevel
Double_t * fCentHistBins
number of cent bins
virtual ~AliAnalysisTaskPWGJEQA()
THnSparse * CreateTHnSparse(const char *name, const char *title, int ndim, const int *nbins, const double *min, const double *max, Option_t *opt="")
void AllocateTrackHistograms()
Container structure for EMCAL clusters.
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
Int_t fNPtRelDiffHistBins
cent bins
void AllocateGeneratorLevelTHnSparse()
Container for jet within the EMCAL jet framework.
Double_t * fPhiHistBins
number of phi bins
AliTLorentzVector fLeadingCluster[3]
!Leading cluster in current event (EMCal/DCal)
const AliJetIterableContainer all() const
static Double_t fgkEMCalDCalPhiDivide
phi value used to distinguish between DCal and EMCal