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 histname = TString::Format(
"%s/hPhosNCellsVsEnergy", cont->GetArrayName().Data());
232 title = histname +
";N cells;#it{E}_{clus} (GeV/);counts";
235 histname = TString::Format(
"%s/hPhosM02VsEnergy", cont->GetArrayName().Data());
236 title = histname +
";M02;#it{E}_{clus} (GeV/);counts";
239 histname = TString::Format(
"%s/hPhosCellIdVsEnergy", cont->GetArrayName().Data());
240 title = histname +
";Cell ID;#it{E}_{clus} (GeV/);counts";
243 const Int_t nEmcalSM = 20;
244 for (
Int_t sm = 0; sm < nEmcalSM; sm++) {
245 histname = TString::Format(
"%s/BySM/hEmcalClusEnergy_SM%d", cont->GetArrayName().Data(), sm);
246 title = histname +
";#it{E}_{cluster} (GeV);counts";
250 for (
Int_t sm = 1; sm < 5; sm++) {
251 histname = TString::Format(
"%s/BySM/hPhosClusEnergy_SM%d", cont->GetArrayName().Data(), sm);
252 title = histname +
";#it{E}_{cluster} (GeV);counts";
265 title[dim] =
"Centrality %";
273 title[dim] =
"#it{E}_{clus} (GeV)";
294 title[dim] =
"cluster type";
301 TString thnname = TString::Format(
"%s/clusterObservables", cont->GetArrayName().Data());
303 for (
Int_t i = 0; i < dim; i++) {
304 hn->GetAxis(i)->SetTitle(title[i]);
305 hn->SetBinEdges(i, binEdges[i]);
315 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
328 axisTitle[dim] =
"Centrality (%)";
336 axisTitle[dim] =
"#eta_{jet}";
343 axisTitle[dim] =
"#phi_{jet} (rad)";
350 axisTitle[dim] =
"#it{p}_{T} (GeV/#it{c})";
351 nbins[dim] = TMath::CeilNint(
fMaxPt/3);
358 axisTitle[dim] =
"#it{p}_{T}^{corr} (GeV/#it{c})";
359 nbins[dim] = TMath::CeilNint(
fMaxPt/3);
360 min[dim] = -
fMaxPt/2 + 25;
366 axisTitle[dim] =
"#it{p}_{T,particle}^{leading} (GeV/#it{c})";
373 TString thnname = TString::Format(
"%s/fHistJetObservables", jets->GetArrayName().Data());
375 for (
Int_t i = 0; i < dim; i++) {
376 hn->GetAxis(i)->SetTitle(axisTitle[i]);
377 hn->SetBinEdges(i, binEdges[i]);
383 histname = TString::Format(
"%s/fHistJetRejectionReason", jets->GetArrayName().Data());
384 title = histname +
";Rejection reason;#it{p}_{T,jet} (GeV/#it{c});counts";
389 histname = TString::Format(
"%s/fHistRhoVsCent", jets->GetArrayName().Data());
390 title = histname +
";Centrality (%);#rho (GeV/#it{c});counts";
409 axistitle[dim] =
"Centrality %";
418 axistitle[dim] =
"No. of tracks";
422 max[dim] = 10000-0.5;
433 axistitle[dim] =
"#it{p}_{T,track}^{leading} (GeV/c)";
442 axistitle[dim] =
"No. of clusters";
458 axistitle[dim] =
"#it{E}_{cluster}^{leading} (GeV)";
467 for (
Int_t i = 0; i < dim; i++) {
468 hn->GetAxis(i)->SetTitle(axistitle[i]);
469 hn->SetBinEdges(i, binEdges[i]);
474 TString title = histname +
";#it{p}_{T,hard} (GeV/c);counts";
478 hTrials->GetXaxis()->SetBinLabel(1,
"#sum{ntrials}");
481 hxsection->GetXaxis()->SetBinLabel(1,
"<#sigma>");
499 title[dim] =
"Centrality %";
507 title[dim] =
"#it{p}_{T} (GeV/#it{c})";
528 title[dim] =
"track type";
535 title[dim] =
"#sigma(#it{p}_{T}) / #it{p}_{T}";
543 for (
Int_t i = 0; i < dim; i++) {
544 hn->GetAxis(i)->SetTitle(title[i]);
545 hn->SetBinEdges(i, binEdges[i]);
561 title[dim] =
"Centrality %";
569 title[dim] =
"#it{p}_{T} (GeV/#it{c})";
590 title[dim] =
"Findable";
598 for (
Int_t i = 0; i < dim; i++) {
599 hn->GetAxis(i)->SetTitle(title[i]);
600 hn->SetBinEdges(i, binEdges[i]);
615 title[dim] =
"Centrality %";
623 title[dim] =
"#it{p}_{T}^{gen} (GeV/#it{c})";
630 title[dim] =
"#eta^{gen}";
637 title[dim] =
"#phi^{gen}";
644 title[dim] =
"#it{p}_{T}^{det} (GeV/#it{c})";
651 title[dim] =
"#eta^{det}";
658 title[dim] =
"#phi^{det}";
665 title[dim] =
"(#it{p}_{T}^{gen} - #it{p}_{T}^{det}) / #it{p}_{T}^{gen}";
672 title[dim] =
"track type";
680 for (
Int_t i = 0; i < dim; i++) {
681 hn->GetAxis(i)->SetTitle(title[i]);
682 hn->SetBinEdges(i, binEdges[i]);
746 fPHOSGeo = AliPHOSGeometry::GetInstance();
748 AliInfo(
"Found instance of PHOS geometry!");
751 AliInfo(
"Creating PHOS geometry!");
752 Int_t runNum = InputEvent()->GetRunNumber();
754 fPHOSGeo = AliPHOSGeometry::GetInstance(
"IHEP");
756 fPHOSGeo = AliPHOSGeometry::GetInstance(
"Run2");
759 AliOADBContainer geomContainer(
"phosGeo");
760 geomContainer.InitFromFile(
"$ALICE_PHYSICS/OADB/PHOS/PHOSMCGeometry.root",
"PHOSMCRotationMatrixes");
761 TObjArray* matrixes = (
TObjArray*)geomContainer.GetObject(runNum,
"PHOSRotationMatrixes");
762 for(
Int_t mod=0; mod<6; mod++) {
763 if(!matrixes->At(mod))
continue;
764 fPHOSGeo->SetMisalMatrix(((TGeoHMatrix*)matrixes->At(mod)),mod);
765 printf(
".........Adding Matrix(%d), geo=%p\n",mod,
fPHOSGeo);
766 ((TGeoHMatrix*)matrixes->At(mod))->
Print();
780 AliGenPythiaEventHeader* pygen;
782 pygen =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
785 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
787 for (
UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++) {
788 pygen =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
802 Int_t nTriggerJets = pygen->NTriggerJets();
804 for (
Int_t ijet = 0; ijet< nTriggerJets; ijet++) {
805 pygen->TriggerJet(ijet, tmpjet);
806 jet.SetPxPyPzE(tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3]);
832 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
834 AliError(Form(
"%s - UserNotify: No current tree!",GetName()));
842 TFile *curfile = tree->GetCurrentFile();
844 AliError(Form(
"%s - UserNotify: No current file!",GetName()));
849 if (chain) tree = chain->GetTree();
883 track = trackIterator.second;
890 AliESDtrack *esdTrack =
dynamic_cast<AliESDtrack*
>(track);
891 if (esdTrack) sigma = TMath::Sqrt(esdTrack->GetSigma1Pt2());
895 AliAODTrack *aodtrack =
dynamic_cast<AliAODTrack*
>(track);
896 if(!aodtrack) AliFatal(
"Not a standard AOD");
898 AliExternalTrackParam exParam;
902 aodtrack->GetCovMatrix(cov);
904 aodtrack->PxPyPz(pxpypz);
906 aodtrack->GetXYZ(xyz);
907 Short_t sign = aodtrack->Charge();
908 exParam.Set(xyz,pxpypz,cov,sign);
910 sigma = TMath::Sqrt(exParam.GetSigma1Pt2());
914 Int_t label = TMath::Abs(track->GetLabel());
921 if (part->GetGeneratorIndex() == 0) {
922 Int_t pdg = TMath::Abs(part->PdgCode());
924 if (pdg == 211 || pdg == 2212 || pdg == 321 || pdg == 11 || pdg == 13) {
932 AliError(Form(
"Track %d has type %d not recognized!",
fDetectorLevel->GetCurrentID(), type));
937 AliAODMCParticle* part;
939 part = partIterator.second;
943 Int_t pdg = TMath::Abs(part->PdgCode());
945 if (pdg == 211 || pdg == 2212 || pdg == 321 || pdg == 11 || pdg == 13) findable = 1;
964 for (
Int_t pos = 0; pos < ncells; pos++) {
990 while ((clusters = static_cast<AliClusterContainer*>(nextClusColl()))) {
995 UInt_t rejectionReason = 0;
996 if (!clusters->
AcceptCluster(it.current_index(), rejectionReason)) {
997 histname = TString::Format(
"%s/fHistClusterRejectionReason", clusters->GetArrayName().Data());
998 fHistManager.
FillTH2(histname, clusters->GetRejectionReasonBitPosition(rejectionReason), it->first.E());
1004 if (it->second->IsEMCAL()) {
1005 Double_t phi = it->first.Phi_0_2pi();
1009 }
else if (isDcal == 1) {
1016 Int_t sm =
fGeom->GetSuperModuleNumber(it->second->GetCellAbsId(0));
1017 if (sm >=0 && sm < 20) {
1018 histname = TString::Format(
"%s/BySM/hEmcalClusEnergy_SM%d", clusters->GetArrayName().Data(), sm);
1022 AliError(Form(
"Supermodule %d does not exist!", sm));
1025 }
else if (it->second->GetType() == AliVCluster::kPHOSNeutral){
1027 Int_t nCells = it->second->GetNCells();
1028 Double_t M02 = it->second->GetM02();
1031 histname = TString::Format(
"%s/hPhosNCellsVsEnergy", clusters->GetArrayName().Data());
1034 histname = TString::Format(
"%s/hPhosM02VsEnergy", clusters->GetArrayName().Data());
1044 fPHOSGeo->AbsToRelNumbering(it->second->GetCellAbsId(0), relid);
1045 Int_t sm = relid[0];
1046 if (sm >=1 && sm < 5) {
1047 histname = TString::Format(
"%s/BySM/hPhosClusEnergy_SM%d", clusters->GetArrayName().Data(), sm);
1051 AliError(Form(
"Supermodule %d does not exist!", sm));
1056 histname = TString::Format(
"%s/hPhosCellIdVsEnergy", clusters->GetArrayName().Data());
1057 for (
Int_t i=0; i < nCells; i++) {
1064 histname = TString::Format(
"%s/clusterObservables", clusters->GetArrayName().Data());
1066 if (!histClusterObservables)
return;
1067 for (
Int_t i = 0; i < histClusterObservables->GetNdimensions(); i++) {
1068 TString title(histClusterObservables->GetAxis(i)->GetTitle());
1069 if (
title==
"Centrality %")
1070 contents[i] =
fCent;
1071 else if (
title==
"#it{E}_{clus} (GeV)")
1072 contents[i] = it->first.E();
1073 else if (
title==
"#eta")
1074 contents[i] = it->first.Eta();
1075 else if (
title==
"#phi")
1076 contents[i] = it->first.Phi_0_2pi();
1077 else if (
title==
"cluster type")
1078 contents[i] = clusType;
1080 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1082 histClusterObservables->Fill(contents);
1094 while ((jets = static_cast<AliJetContainer*>(nextJetColl()))) {
1098 histname = TString::Format(
"%s/fHistRhoVsCent", jets->GetArrayName().Data());
1102 for (
auto jet : jets->
all()) {
1104 UInt_t rejectionReason = 0;
1105 if (!jets->
AcceptJet(jet, rejectionReason)) {
1106 histname = TString::Format(
"%s/fHistJetRejectionReason", jets->GetArrayName().Data());
1107 fHistManager.
FillTH2(histname.Data(), jets->GetRejectionReasonBitPosition(rejectionReason), jet->Pt());
1112 Float_t corrPt = jet->Pt() - rhoVal * jet->Area();
1114 TLorentzVector leadPart;
1118 histname = TString::Format(
"%s/fHistJetObservables", jets->GetArrayName().Data());
1120 if (!histJetObservables)
return;
1121 for (
Int_t i = 0; i < histJetObservables->GetNdimensions(); i++) {
1122 TString title(histJetObservables->GetAxis(i)->GetTitle());
1123 if (
title==
"Centrality (%)")
1124 contents[i] =
fCent;
1125 else if (
title==
"#eta_{jet}")
1126 contents[i] = jet->Eta();
1127 else if (
title==
"#phi_{jet} (rad)")
1128 contents[i] = jet->Phi_0_2pi();
1129 else if (
title==
"#it{p}_{T} (GeV/#it{c})")
1130 contents[i] = jet->Pt();
1131 else if (
title==
"#it{p}_{T}^{MC} (GeV/#it{c})")
1132 contents[i] = jet->MCPt();
1133 else if (
title==
"#it{p}_{T}^{corr} (GeV/#it{c})")
1134 contents[i] = corrPt;
1135 else if (
title==
"#it{p}_{T,particle}^{leading} (GeV/#it{c})")
1136 contents[i] = ptLeading;
1138 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1140 histJetObservables->Fill(contents);
1150 for (
Int_t i = 0; i < 3; i++) {
1162 for (
Int_t i = 0; i < 3; i++) {
1168 for (
Int_t i = 0; i < histEventQA->GetNdimensions(); i++) {
1170 if (
title==
"Centrality %")
1171 contents[i] = eventQA.
fCent;
1172 else if (
title==
"No. of tracks")
1174 else if (
title==
"No. of clusters")
1175 contents[i] = globalNclusters;
1176 else if (
title==
"#it{p}_{T,track}^{leading} (GeV/c)")
1178 else if (
title==
"#it{E}_{cluster}^{leading} (GeV)")
1179 contents[i] = globalMaxCluster.E();
1181 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
1184 histEventQA->Fill(contents);
1194 Double_t sigma1OverPt, Byte_t trackType)
1199 if (!thnTracks)
return;
1200 for (
Int_t i = 0; i < thnTracks->GetNdimensions(); i++) {
1202 if (
title==
"Centrality %")
1204 else if (
title==
"#it{p}_{T} (GeV/#it{c})")
1205 contents[i] = trackPt;
1206 else if (
title==
"#eta")
1207 contents[i] = trackEta;
1208 else if (
title==
"#phi")
1209 contents[i] = trackPhi;
1210 else if (
title==
"#sigma(1/#it{p}_{T}) (GeV/#it{c})^{-1}")
1211 contents[i] = sigma1OverPt;
1212 else if (
title==
"#sigma(#it{p}_{T}) / #it{p}_{T}")
1213 contents[i] = sigma1OverPt*trackPt;
1214 else if (
title==
"track type")
1215 contents[i] = trackType;
1217 AliWarning(Form(
"Unable to fill dimension %s of histogram %s!",
title.Data(), thnTracks->GetName()));
1220 thnTracks->Fill(contents);
1229 if (!thnTracks_PhysPrim)
return;
1230 for (
Int_t i = 0; i < thnTracks_PhysPrim->GetNdimensions(); i++) {
1231 TString title(thnTracks_PhysPrim->GetAxis(i)->GetTitle());
1232 if (
title==
"Centrality %")
1234 else if (
title==
"#it{p}_{T} (GeV/#it{c})")
1235 contents[i] = partPt;
1236 else if (
title==
"#eta")
1237 contents[i] = partEta;
1238 else if (
title==
"#phi")
1239 contents[i] = partPhi;
1240 else if (
title==
"Findable")
1241 contents[i] = findable;
1243 AliWarning(Form(
"Unable to fill dimension %s of histogram %s!",
title.Data(), thnTracks_PhysPrim->GetName()));
1246 thnTracks_PhysPrim->Fill(contents);
1256 if (!thnTracks_Matched)
return;
1257 for (
Int_t i = 0; i < thnTracks_Matched->GetNdimensions(); i++) {
1258 TString title(thnTracks_Matched->GetAxis(i)->GetTitle());
1259 if (
title==
"Centrality %")
1261 else if (
title==
"#it{p}_{T}^{gen} (GeV/#it{c})")
1262 contents[i] = partPt;
1263 else if (
title==
"#eta^{gen}")
1264 contents[i] = partEta;
1265 else if (
title==
"#phi^{gen}")
1266 contents[i] = partPhi;
1267 else if (
title==
"#it{p}_{T}^{det} (GeV/#it{c})")
1268 contents[i] = trackPt;
1269 else if (
title==
"#eta^{det}")
1270 contents[i] = trackEta;
1271 else if (
title==
"#phi^{det}")
1272 contents[i] = trackPhi;
1273 else if (
title==
"(#it{p}_{T}^{gen} - #it{p}_{T}^{det}) / #it{p}_{T}^{gen}")
1274 contents[i] = (partPt - trackPt) / partPt;
1275 else if (
title==
"(#it{p}_{T}^{gen} - #it{p}_{T}^{det}) / #it{p}_{T}^{det}")
1276 contents[i] = (partPt - trackPt) / trackPt;
1277 else if (
title==
"track type")
1280 AliWarning(Form(
"Unable to fill dimension %s of histogram %s!",
title.Data(), thnTracks_Matched->GetName()));
1283 thnTracks_Matched->Fill(contents);
void FillCellHistograms()
void AllocateMatchedParticlesTHnSparse()
Double_t * fEtaHistBins
! eta bins
Double_t * fPtResHistBins
! 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
! number of eta bins
Int_t fNPtResHistBins
! number of pt res bins
AliTrackContainer * fDetectorLevel
! detector level container
Int_t fNPhiHistBins
! number of phi bins
void AllocateEventQAHistograms()
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
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="")
Fill a 2D histogram within the container.
void AllocateJetHistograms()
AliAnalysisTaskPWGJEQA()
Default constructor for ROOT I/O purposes.
Bool_t fGeneralHistograms
whether or not it should fill some general histograms
THistManager fHistManager
Histogram manager.
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 FillHistograms()
Function filling histograms.
Bool_t fDoTrackQA
Set whether to enable track QA.
void FillTrackHistograms()
TObjArray fParticleCollArray
particle/track collection array
void FillClusterHistograms()
Double_t * fPtHistBins
! 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="")
Create a new TH2 within the container.
TObject * FindObject(const char *name) const
Find an object inside the container.
void FillEventQAHistograms()
void CreateTProfile(const char *name, const char *title, int nbinsX, double xmin, double xmax, Option_t *opt="")
Create a new TProfile within the container.
THashList * GetListOfHistograms() const
Get the list of histograms.
Double_t GetLeadingHadronPt(const AliEmcalJet *jet) const
AliEMCALGeometry * fGeom
!emcal geometry
AliPHOSGeometry * fPHOSGeo
! phos geometry
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="")
Create a new TH1 within the container.
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
! 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
! number of pt bins
TString fCaloCellsName
name of calo cell collection
Int_t fNIntegerHistBins
! number of integer bins
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Fill a 1D histogram within the container.
Bool_t PythiaInfoFromFile(const char *currFile, Float_t &fXsec, Float_t &fTrials, Int_t &pthard)
Loading PYTHIA information from external cross section file into the task.
TObjArray fJetCollArray
jet collection array
AliVCaloCells * fCaloCells
!cells
AliRhoParameter * GetRhoParameter()
Int_t fNCentHistBins
! number of cent bins
void ExecOnce()
Perform steps needed to initialize the analysis.
Double_t * fIntegerHistBins
! integer bins
ClassImp(AliAnalysisTaskDeltaPt) AliAnalysisTaskDeltaPt
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)
Float_t fPtHard
!event -hard
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
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.
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()
Main initialization function on the worker.
Float_t fMaxPt
Histogram pt limit.
AliMCParticleContainer * fGeneratorLevel
! generator level container
Double_t * fCentHistBins
! 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="")
Create a new THnSparse within the container.
void AllocateTrackHistograms()
Container structure for EMCAL clusters.
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
Int_t fNPtRelDiffHistBins
! number of pt relative difference bins
void AllocateGeneratorLevelTHnSparse()
Container for jet within the EMCAL jet framework.
Double_t * fPhiHistBins
! 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