16 #include <TClonesArray.h> 23 #include <THnSparse.h> 30 #include <TClonesArray.h> 33 #include <THashList.h> 35 #include <TObjArray.h> 36 #include <TParameter.h> 38 #include <AliVCluster.h> 39 #include <AliVParticle.h> 48 #include "AliEMCALGeometry.h" 49 #include "AliVCaloCells.h" 50 #include "AliESDCaloCells.h" 51 #include "AliMCEvent.h" 52 #include "AliMCParticle.h" 53 #include "AliGenEventHeader.h" 54 #include "AliGenPythiaEventHeader.h" 57 #include "AliAnalysisUtils.h" 58 #include "AliESDEvent.h" 59 #include "AliAODEvent.h" 60 #include "AliVEvent.h" 61 #include "AliEMCALTriggerPatchInfo.h" 63 #include "AliInputEventHandler.h" 65 #include "AliMultSelection.h" 66 #include "AliMultEstimator.h" 67 #include "AliOADBContainer.h" 83 fUseRecalcPatches(false),
87 fRecoUtil(0x0), fClusterEResolution(0x0), fVaryTrkPtRes(),
92 fHistJetGammaPatchE(),
94 fHistJetGammaPatchPt(),
100 for(
int i=0;i<9;i++){
131 for(
int i=0;i<=9;i++){
156 for(
int i=0;i<=9;i++){
157 histName = TString::Format(
"fHistEMCalTowerMult_%d",i);
158 histTitle = TString::Format(
"%s;N_{tower};Counts",histName.Data());
160 fOutput->Add(fHistEMCalTowerMult[i]);
170 while ((obj = next())) {
179 SparseBit = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<10 | 1<<11 | 1<<12 | 1<<13 | 1<<14 | 1<<15 | 1<<16;
192 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
212 while ((clusCont = static_cast<AliClusterContainer*>(next()))) {
213 groupname = clusCont->GetName();
216 histname = TString::Format(
"%s/histClusterEnergy_%d", groupname.Data(), cent);
217 histtitle = TString::Format(
"%s;#it{E}_{cluster} (GeV);counts", histname.Data());
220 histname = TString::Format(
"%s/histClusterEnergyExotic_%d", groupname.Data(), cent);
221 histtitle = TString::Format(
"%s;#it{E}_{cluster}^{exotic} (GeV);counts", histname.Data());
224 histname = TString::Format(
"%s/histClusterNonLinCorrEnergy_%d", groupname.Data(), cent);
225 histtitle = TString::Format(
"%s;#it{E}_{cluster}^{non-lin.corr.} (GeV);counts", histname.Data());
228 histname = TString::Format(
"%s/histClusterHadCorrEnergy_%d", groupname.Data(), cent);
229 histtitle = TString::Format(
"%s;#it{E}_{cluster}^{had.corr.} (GeV);counts", histname.Data());
232 histname = TString::Format(
"%s/histClusterPhi_%d", groupname.Data(), cent);
233 histtitle = TString::Format(
"%s;#it{#phi}_{custer};counts", histname.Data());
236 histname = TString::Format(
"%s/histClusterEta_%d", groupname.Data(), cent);
237 histtitle = TString::Format(
"%s;#it{#eta}_{custer};counts", histname.Data());
240 histname = TString::Format(
"%s/fHistFcrossvEonline_%d", groupname.Data(), cent);
241 histtitle = TString::Format(
"%s;#it{E}_{cluster} (GeV);#it{F}_{cross}", histname.Data());
245 histname = TString::Format(
"%s/histNClusters_%d", groupname.Data(), cent);
246 histtitle = TString::Format(
"%s;number of clusters;events", histname.Data());
270 histname = TString::Format(
"%s/histCellEnergy_%d", groupname.Data(), cent);
271 histtitle = TString::Format(
"%s;#it{E}_{cell} (GeV);counts", histname.Data());
274 histname = TString::Format(
"%s/histNCells_%d", groupname.Data(), cent);
275 histtitle = TString::Format(
"%s;number of cells;events", histname.Data());
298 while ((partCont = static_cast<AliParticleContainer*>(next()))) {
299 groupname = partCont->GetName();
302 histname = TString::Format(
"%s/histTrackPt_%d", groupname.Data(), cent);
303 histtitle = TString::Format(
"%s;#it{p}_{T,track} (GeV/#it{c});counts", histname.Data());
306 histname = TString::Format(
"%s/histTrackPhi_%d", groupname.Data(), cent);
307 histtitle = TString::Format(
"%s;#it{#phi}_{track};counts", histname.Data());
310 histname = TString::Format(
"%s/histTrackEta_%d", groupname.Data(), cent);
311 histtitle = TString::Format(
"%s;#it{#eta}_{track};counts", histname.Data());
314 if (TClass(partCont->GetClassName()).InheritsFrom(
"AliVTrack")) {
315 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", groupname.Data(), cent);
316 histtitle = TString::Format(
"%s;#it{p}_{T,track}^{vertex} (GeV/#it{c});#it{#eta}_{track}^{vertex} - #it{#eta}_{track}^{EMCal};counts", histname.Data());
319 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", groupname.Data(), cent);
320 histtitle = TString::Format(
"%s;#it{p}_{T,track}^{vertex} (GeV/#it{c});#it{#phi}_{track}^{vertex} - #it{#phi}_{track}^{EMCal};counts", histname.Data());
323 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", groupname.Data(), cent);
324 histtitle = TString::Format(
"%s;#it{p}_{T,track}^{vertex} (GeV/#it{c});#it{p}_{T,track}^{vertex} - #it{p}_{T,track}^{EMCal} (GeV/#it{c});counts", histname.Data());
327 histname = TString::Format(
"%s/fHistEoverPvsP_%d", groupname.Data(), cent);
328 histtitle = TString::Format(
"%s;#it{P}_{track} (GeV/#it{c});#it{E}_{cluster} / #it{P}_{track} #it{c};counts", histname.Data());
332 histname = TString::Format(
"%s/histNTracks_%d", groupname.Data(), cent);
333 histtitle = TString::Format(
"%s;number of tracks;events", histname.Data());
356 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
357 groupname = jetCont->GetName();
360 histname = TString::Format(
"%s/histJetPt_%d", groupname.Data(), cent);
361 histtitle = TString::Format(
"%s;#it{p}_{T,jet} (GeV/#it{c});counts", histname.Data());
364 histname = TString::Format(
"%s/histJetClusterEnergy_%d", groupname.Data(), cent);
365 histtitle = TString::Format(
"%s;#it{E}_{JetClus} (GeV);counts", histname.Data());
368 histname = TString::Format(
"%s/histJetTrkPt_%d", groupname.Data(), cent);
369 histtitle = TString::Format(
"%s;#it{p}_{T,JetTrk} (GeV/#it{c});counts", histname.Data());
372 histname = TString::Format(
"%s/histJetNEFvJetPt_%d", groupname.Data(), cent);
373 histtitle = TString::Format(
"%s;#it{p}_{T,Jet};NEF", histname.Data());
376 histname = TString::Format(
"%s/histNumbJetConstvJetPt_%d", groupname.Data(), cent);
377 histtitle = TString::Format(
"%s;#it{p}_{T,Jet};NumberofJetConstit", histname.Data());
380 histname = TString::Format(
"%s/histJetFF_%d", groupname.Data(), cent);
381 histtitle = TString::Format(
"%s;Z=#it{p}_{T,leading} / #it{p}_{T,Jet};counts", histname.Data());
384 histname = TString::Format(
"%s/histJetZvJetPt_%d", groupname.Data(), cent);
385 histtitle = TString::Format(
"%s;#it{p}_{T,Jet};Z=#it{p}_{T,Trk} / #it{p}_{T,Jet}", histname.Data());
392 histname = TString::Format(
"%s/histFCrossvZleading_%d", groupname.Data(), cent);
393 histtitle = TString::Format(
"%s;#it{z}_{leading};#it{F}_{Cross}", histname.Data());
397 histname = TString::Format(
"%s/fHistJetJetPatchE_%d", groupname.Data(), cent);
398 histtitle = TString::Format(
"%s;#it{E}_{JetGammaPatch} (GeV);counts", histname.Data());
401 histname = TString::Format(
"%s/fHistJetGammaPatchE_%d", groupname.Data(), cent);
402 histtitle = TString::Format(
"%s;#it{E}_{JetGammaPatch} (GeV);counts", histname.Data());
405 histname = TString::Format(
"%s/fHistJetJetPatchPt_%d", groupname.Data(), cent);
406 histtitle = TString::Format(
"%s;#it{p}_{T,JetJetPatch} (GeV/#it{c});counts", histname.Data());
409 histname = TString::Format(
"%s/fHistJetGammaPatchPt_%d", groupname.Data(), cent);
410 histtitle = TString::Format(
"%s;#it{p}_{T,JetGammaPatch} (GeV/#it{c});counts", histname.Data());
413 histname = TString::Format(
"%s/fHistTriggerPatchE_%d", groupname.Data(), cent);
414 histtitle = TString::Format(
"%s;#it{E}_{TriggerPatch} (GeV);counts", histname.Data());
417 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiJE_%d", groupname.Data(), cent);
418 histtitle = TString::Format(
"%s;#it{#phi}_{jet} - #it{#phi}_{JE,patch};#it{#eta}_{Jet} - #it{#eta}_{JE,patch};counts", histname.Data());
421 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiGA_%d", groupname.Data(), cent);
422 histtitle = TString::Format(
"%s;#it{#phi}_{jet} - #it{#phi}_{GA,patch};#it{#eta}_{Jet} - #it{#eta}_{GA,patch};counts", histname.Data());
425 histname = TString::Format(
"%s/fHistJetEPatchEJE_%d", groupname.Data(), cent);
426 histtitle = TString::Format(
"%s;#it{E_{JE,patch}}#it{E_{Jet,UnCorr}};counts", histname.Data());
429 histname = TString::Format(
"%s/fHistJetEPatchEGA_%d", groupname.Data(), cent);
430 histtitle = TString::Format(
"%s;#it{E_{GA,patch}};#it{E_{Jet,UnCorr}};counts", histname.Data());
434 histname = TString::Format(
"%s/histJetArea_%d", groupname.Data(), cent);
435 histtitle = TString::Format(
"%s;#it{A}_{jet};counts", histname.Data());
438 histname = TString::Format(
"%s/histJetPhi_%d", groupname.Data(), cent);
439 histtitle = TString::Format(
"%s;#it{#phi}_{jet};counts", histname.Data());
442 histname = TString::Format(
"%s/histJetEta_%d", groupname.Data(), cent);
443 histtitle = TString::Format(
"%s;#it{#eta}_{jet};counts", histname.Data());
446 histname = TString::Format(
"%s/histJetClusterPhi_%d", groupname.Data(), cent);
447 histtitle = TString::Format(
"%s;#it{#phi}_{JetClus};counts", histname.Data());
450 histname = TString::Format(
"%s/histJetClusterEta_%d", groupname.Data(), cent);
451 histtitle = TString::Format(
"%s;#it{#eta}_{JetClus};counts", histname.Data());
454 histname = TString::Format(
"%s/histNJets_%d", groupname.Data(), cent);
455 histtitle = TString::Format(
"%s;number of jets;events", histname.Data());
464 histname = TString::Format(
"%s/histJetCorrPt_%d", groupname.Data(), cent);
465 histtitle = TString::Format(
"%s;#it{p}_{T,jet}^{corr} (GeV/#it{c});counts", histname.Data());
503 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
504 groupname = jetCont->GetName();
506 for(
auto jet : jetCont->
accepted()) {
510 TLorentzVector leadPart;
513 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
515 histname = TString::Format(
"%s/histJetPt_%d", groupname.Data(),
fCentBin);
518 histname = TString::Format(
"%s/histJetClusterEnergy_%d", groupname.Data(),
fCentBin);
521 histname = TString::Format(
"%s/histJetArea_%d", groupname.Data(),
fCentBin);
524 histname = TString::Format(
"%s/histJetPhi_%d", groupname.Data(),
fCentBin);
527 histname = TString::Format(
"%s/histJetEta_%d", groupname.Data(),
fCentBin);
530 histname = TString::Format(
"%s/histJetNEFvJetPt_%d", groupname.Data(),
fCentBin);
534 histname = TString::Format(
"%s/histNumbJetConstvJetPt_%d", groupname.Data(),
fCentBin);
537 histname = TString::Format(
"%s/histJetFF_%d", groupname.Data(),
fCentBin);
540 Double_t MatchedEta = 0.04, MatchedPhi = 0.04;
547 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
548 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",GetName(), cls.GetName(),
"EmcalTriggers"));
554 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
560 AliEMCALTriggerPatchInfo *currentpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
563 if(currentpatch->IsGammaLowRecalc() || currentpatch->IsGammaLowSimple()){
564 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiGA_%d", groupname.Data(),
fCentBin);
565 fHistManager.
FillTH2(histname, jet->Phi() - currentpatch->GetPhiGeo(), jet->Eta() - currentpatch->GetEtaGeo());
566 histname = TString::Format(
"%s/fHistJetEPatchEGA_%d", groupname.Data(),
fCentBin);
569 if(jet->Phi() - currentpatch->GetPhiGeo() <= MatchedPhi && jet->Eta() - currentpatch->GetEtaGeo() <= MatchedEta){
570 histname = TString::Format(
"%s/fHistJetGammaPatchE_%d", groupname.Data(),
fCentBin);
572 histname = TString::Format(
"%s/fHistJetGammaPatchPt_%d", groupname.Data(),
fCentBin);
578 if(currentpatch->IsJetLowRecalc() || currentpatch->IsJetLowSimple()){
579 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiJE_%d", groupname.Data(),
fCentBin);
580 fHistManager.
FillTH2(histname, jet->Phi() - currentpatch->GetPhiGeo(), jet->Eta() - currentpatch->GetEtaGeo());
581 histname = TString::Format(
"%s/fHistJetEPatchEJE_%d", groupname.Data(),
fCentBin);
584 if(jet->Phi() - currentpatch->GetPhiGeo() <= MatchedPhi && jet->Eta() - currentpatch->GetEtaGeo() <= MatchedEta){
585 histname = TString::Format(
"%s/fHistJetJetPatchE_%d", groupname.Data(),
fCentBin);
587 histname = TString::Format(
"%s/fHistJetJetPatchPt_%d", groupname.Data(),
fCentBin);
599 for (
Int_t it = 0; it < jet->GetNumberOfTracks(); it++) {
600 AliVParticle *JetTrk = jet->TrackAt(it, tracks->GetArray());
603 histname = TString::Format(
"%s/histJetTrkPt_%d", groupname.Data(),
fCentBin);
606 Z_part =
GetZ(JetTrk->Px(),JetTrk->Py(),JetTrk->Pz(),jet->Px(),jet->Py(),jet->Pz());
608 histname = TString::Format(
"%s/histJetZvJetPt_%d", groupname.Data(),
fCentBin);
617 for(
auto cluster : JetCluster->
accepted()) {
619 cluster->GetMomentum(nPart,
fVertex);
621 histname = TString::Format(
"%s/histJetClusterEnergy_%d", groupname.Data(),
fCentBin);
623 histname = TString::Format(
"%s/histJetClusterPhi_%d", groupname.Data(),
fCentBin);
625 histname = TString::Format(
"%s/histJetClusterEta_%d", groupname.Data(),
fCentBin);
627 histname = TString::Format(
"%s/histFCrossvZleading_%d", groupname.Data(),
fCentBin);
634 AliVCluster* leadingCluster = jet->GetLeadingCluster();
635 if(!leadingCluster)
continue;
637 if(!Globaltracks || !leadingCluster)
continue;
643 Double_t MBJetSparseFill[13]={TrackMultiplicity,jet->Pt(),jet->MaxTrackPt(),leadingCluster->E(),jet->Eta(),jet->Phi(),JetFCrossLeading,z,jet->Area(),jet->NEF(),Numb,NumbNeu,NumbChrg};
647 histname = TString::Format(
"%s/histJetCorrPt_%d", groupname.Data(),
fCentBin);
651 histname = TString::Format(
"%s/histNJets_%d", groupname.Data(),
fCentBin);
668 while ((partCont = static_cast<AliParticleContainer*>(next()))) {
669 groupname = partCont->GetName();
675 histname = TString::Format(
"%s/histTrackPt_%d", groupname.Data(),
fCentBin);
678 histname = TString::Format(
"%s/histTrackPhi_%d", groupname.Data(),
fCentBin);
681 histname = TString::Format(
"%s/histTrackEta_%d", groupname.Data(),
fCentBin);
684 if (partCont->GetLoadedClass()->InheritsFrom(
"AliVTrack")) {
685 const AliVTrack* track =
static_cast<const AliVTrack*
>(
part);
687 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", groupname.Data(),
fCentBin);
690 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", groupname.Data(),
fCentBin);
693 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", groupname.Data(),
fCentBin);
697 Int_t iCluster = track->GetEMCALcluster();
701 histname = TString::Format(
"%s/fHistEoverPvsP_%d", groupname.Data(),
fCentBin);
709 histname = TString::Format(
"%s/histNTracks_%d", groupname.Data(),
fCentBin);
724 while ((clusCont = static_cast<AliClusterContainer*>(next()))) {
725 groupname = clusCont->GetName();
728 for(
auto cluster : clusCont->
all()) {
729 if (!cluster)
continue;
732 histname = TString::Format(
"%s/fHistFcrossvEonline_%d", groupname.Data(),
fCentBin);
735 if (cluster->GetIsExotic()) {
736 histname = TString::Format(
"%s/histClusterEnergyExotic_%d", groupname.Data(),
fCentBin);
742 for(
auto cluster : clusCont->
accepted()) {
743 if (!cluster)
continue;
747 cluster->GetMomentum(nPart,
fVertex);
749 histname = TString::Format(
"%s/histClusterEnergy_%d", groupname.Data(),
fCentBin);
752 histname = TString::Format(
"%s/histClusterNonLinCorrEnergy_%d", groupname.Data(),
fCentBin);
755 histname = TString::Format(
"%s/histClusterHadCorrEnergy_%d", groupname.Data(),
fCentBin);
758 histname = TString::Format(
"%s/histClusterPhi_%d", groupname.Data(),
fCentBin);
761 histname = TString::Format(
"%s/histClusterEta_%d", groupname.Data(),
fCentBin);
765 histname = TString::Format(
"%s/histNClusters_%d", groupname.Data(),
fCentBin);
786 for (
Short_t pos = 0; pos < ncells; pos++) {
823 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
824 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",GetName(), cls.GetName(),
"EmcalTriggers"));
830 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
834 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
906 cout<<
"*****************************"<<endl;
907 cout<<
"******* Task Finished *******"<<endl;
908 cout<<
"*****************************"<<endl;
916 return (trkPx*jetPx+trkPy*jetPy+trkPz*jetPz)/(jetPx*jetPx+jetPy*jetPy+jetPz*jetPz);
928 Int_t nCellCount[10] = {0};
933 for (
Short_t pos = 0; pos < ncells; pos++) {
936 Int_t sMod =
fGeom->GetSuperModuleNumber(cellId);
938 if(amp<0.1)
continue;
943 for(
Int_t i=0; i<=9; i++){
954 Int_t AbsIdseed = -1;
956 for (
Int_t i = 0; i < cluster->GetNCells(); i++) {
957 if (cells->GetCellAmplitude(cluster->GetCellAbsId(i)) > Eseed) {
958 Eseed = cells->GetCellAmplitude(cluster->GetCellAbsId(i));
959 AbsIdseed = cluster->GetCellAbsId(i);
967 Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1;
968 fGeom->GetCellIndex(AbsIdseed,imod,iTower,iIphi,iIeta);
969 fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,iphi,ieta);
976 if (iphi < AliEMCALGeoParams::fgkEMCALRows-1) {
977 absID1 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
980 absID2 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
988 if (ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2)) {
989 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
990 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
992 else if (ieta == 0 && imod%2) {
993 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
994 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1);
997 if (ieta < AliEMCALGeoParams::fgkEMCALCols-1) {
998 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
1001 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
1005 Double_t ecell1 = cells->GetCellAmplitude(absID1);
1006 Double_t ecell2 = cells->GetCellAmplitude(absID2);
1007 Double_t ecell3 = cells->GetCellAmplitude(absID3);
1008 Double_t ecell4 = cells->GetCellAmplitude(absID4);
1010 Double_t Ecross = ecell1 + ecell2 + ecell3 + ecell4;
1012 Double_t Fcross = 1 - Ecross/Eseed;
1038 const Int_t dim = count;
1045 while(c<dim && i<32){
1050 hnTitle += Form(
";%s",label.Data());
1058 return new THnSparseF(name, hnTitle.Data(), dim,
nbins, xmin, xmax);
1076 label =
"V0 centrality (%)";
1082 label =
"Multiplicity";
1088 label =
"Jet p_{T}";
1095 label =
"Track p_{T}";
1102 label =
"Cluster E";
1123 label =
"#it{p}_{T,track}^{leading}";
1130 label =
"Matched Trigger Amp";
1137 label =
"#Delta#eta";
1144 label =
"#Delta#phi";
1151 label =
"F_{cross}";
1158 label =
"z_{leading}";
1165 label =
"#it{A}_{jet}";
1179 label =
"Numb Constit";
1186 label =
"Numb Chrg Constit";
1193 label =
"Numb Neu Constit";
THashList * CreateHistoGroup(const char *groupname)
Create a new group of histograms within a parent group.
TObjArray fClusterCollArray
cluster collection array
void AllocateCellHistograms()
virtual THnSparse * NewTHnSparseF(const char *name, UInt_t entries)
AliMCEvent * fMCevent
! Monte-Carlo event
Double_t GetRhoVal() const
const TString & GetRhoName() const
virtual ~AliAnalysisTaskEmcalJetSpectra8TeVTriggerQA()
TF1 * fClusterEResolution
! Parameterization of cluster energy resolution from 2010 test beam results a = 4.35 b = 9.07 c = 1.63
Container with name, TClonesArray and cuts for particles.
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.
void Terminate(Option_t *option)
Double_t GetFcross(const AliVCluster *cluster, AliVCaloCells *cells)
Double_t fMinBinPt
min pt in histograms
AliClusterContainer * GetClusterContainer() const
THistManager fHistManager
! Histogram manager
Int_t fCentBin
!event centrality bin
Declaration of class AliAnalysisTaskEmcalJetSpectra8TeVTriggerQA.
void AllocateClusterHistograms()
void AllocateJetHistograms()
TH1F * fHistNumbJets
! Numb Jets Per Event
TString part
use mixed event to constrain combinatorial background
Container for particles within the EMCAL framework.
void SetCaloTriggerPatchInfoName(const char *n)
Bool_t fUseSumw2
! activate sumw2 for output histograms
AliAnalysisTaskEmcalJetSpectra8TeVTriggerQA()
TObjArray fParticleCollArray
particle/track collection array
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
const AliClusterIterableContainer all() const
AliParticleContainer * GetParticleContainer() const
void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet *jet) const
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.
Bool_t fUseRecalcPatches
Switch between offline (FEE) and recalc (L1) patches.
TH1F * fHistEMCalTowerMult[9]
! EMCal Tower Multiplicity by SM
Bool_t IsLEDEvent() const
TH1F * fHistJetPt
! Jet Pt Dist
THashList * GetListOfHistograms() const
Get the list of histograms.
AliEMCALGeometry * fGeom
!emcal geometry
void AllocateTrackHistograms()
Double_t Phi_0_2pi() const
Double_t fVaryTrkPtRes
! Variation of tracking momentum resolution
Implementation of a EMCal spectra task and QA for EMCal triggers.
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
Int_t fNcentBins
how many centrality bins
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
AliVCluster * GetAcceptCluster(Int_t i) const
TH1F * fHistJetJetPatchPt
! Jet - Jet Trigger Patch Pt
const AliClusterIterableContainer accepted() const
TString fCaloCellsName
name of calo cell collection
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 FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Fill a 1D histogram within the container.
TObjArray fJetCollArray
jet collection array
AliVCaloCells * fCaloCells
!cells
AliRhoParameter * GetRhoParameter()
AliVEvent * fRecevent
! Reconstructed event
TH1F * fHistTriggerPatchE
! EMCal Trigger Patch E
THnSparse * fhnMBJetSpectra
! MB Jet Spectra sparse
AliEmcalList * fOutput
!output list
TH1F * fHistJetGammaPatchE
! Jet-Gamma Trigger Patch E
Double_t fMaxBinPt
max pt in histograms
TH1F * fHistJetGammaPatchPt
! Jet-Gamma Trigger Patch Pt
void UserCreateOutputObjects()
Double_t fVertex[3]
!event vertex
void SetMakeGeneralHistograms(Bool_t g)
TClonesArray * fTriggerPatchInfo
!trigger patch info array
Base task in the EMCAL jet framework.
const AliParticleIterableContainer accepted() const
void UserCreateOutputObjects()
Main initialization function on the worker.
Double_t GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz, const Double_t jetPx, const Double_t jetPy, const Double_t jetPz) const
const AliJetIterableContainer accepted() const
Container structure for EMCAL clusters.
Container for jet within the EMCAL jet framework.
Int_t fNbins
no. of pt bins
virtual void GetDimParams(Int_t iEntry, TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax)
TH1F * fHistJetJetPatchE
! Jet - Jet Trigger Patch E
AliEMCALRecoUtils * fRecoUtil
! Reco utility