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())) {
193 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
213 while ((clusCont = static_cast<AliClusterContainer*>(next()))) {
214 groupname = clusCont->GetName();
217 histname = TString::Format(
"%s/histClusterEnergy_%d", groupname.Data(), cent);
218 histtitle = TString::Format(
"%s;#it{E}_{cluster} (GeV);counts", histname.Data());
221 histname = TString::Format(
"%s/histClusterEnergyExotic_%d", groupname.Data(), cent);
222 histtitle = TString::Format(
"%s;#it{E}_{cluster}^{exotic} (GeV);counts", histname.Data());
225 histname = TString::Format(
"%s/histClusterNonLinCorrEnergy_%d", groupname.Data(), cent);
226 histtitle = TString::Format(
"%s;#it{E}_{cluster}^{non-lin.corr.} (GeV);counts", histname.Data());
229 histname = TString::Format(
"%s/histClusterHadCorrEnergy_%d", groupname.Data(), cent);
230 histtitle = TString::Format(
"%s;#it{E}_{cluster}^{had.corr.} (GeV);counts", histname.Data());
233 histname = TString::Format(
"%s/histClusterPhi_%d", groupname.Data(), cent);
234 histtitle = TString::Format(
"%s;#it{#phi}_{custer};counts", histname.Data());
237 histname = TString::Format(
"%s/histClusterEta_%d", groupname.Data(), cent);
238 histtitle = TString::Format(
"%s;#it{#eta}_{custer};counts", histname.Data());
241 histname = TString::Format(
"%s/fHistFcrossvEonline_%d", groupname.Data(), cent);
242 histtitle = TString::Format(
"%s;#it{E}_{cluster} (GeV);#it{F}_{cross}", histname.Data());
246 histname = TString::Format(
"%s/histNClusters_%d", groupname.Data(), cent);
247 histtitle = TString::Format(
"%s;number of clusters;events", histname.Data());
271 histname = TString::Format(
"%s/histCellEnergy_%d", groupname.Data(), cent);
272 histtitle = TString::Format(
"%s;#it{E}_{cell} (GeV);counts", histname.Data());
275 histname = TString::Format(
"%s/histNCells_%d", groupname.Data(), cent);
276 histtitle = TString::Format(
"%s;number of cells;events", histname.Data());
299 while ((partCont = static_cast<AliParticleContainer*>(next()))) {
300 groupname = partCont->GetName();
303 histname = TString::Format(
"%s/histTrackPt_%d", groupname.Data(), cent);
304 histtitle = TString::Format(
"%s;#it{p}_{T,track} (GeV/#it{c});counts", histname.Data());
307 histname = TString::Format(
"%s/histTrackPhi_%d", groupname.Data(), cent);
308 histtitle = TString::Format(
"%s;#it{#phi}_{track};counts", histname.Data());
311 histname = TString::Format(
"%s/histTrackEta_%d", groupname.Data(), cent);
312 histtitle = TString::Format(
"%s;#it{#eta}_{track};counts", histname.Data());
315 if (TClass(partCont->GetClassName()).InheritsFrom(
"AliVTrack")) {
316 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", groupname.Data(), cent);
317 histtitle = TString::Format(
"%s;#it{p}_{T,track}^{vertex} (GeV/#it{c});#it{#eta}_{track}^{vertex} - #it{#eta}_{track}^{EMCal};counts", histname.Data());
320 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", groupname.Data(), cent);
321 histtitle = TString::Format(
"%s;#it{p}_{T,track}^{vertex} (GeV/#it{c});#it{#phi}_{track}^{vertex} - #it{#phi}_{track}^{EMCal};counts", histname.Data());
324 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", groupname.Data(), cent);
325 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());
328 histname = TString::Format(
"%s/fHistEoverPvsP_%d", groupname.Data(), cent);
329 histtitle = TString::Format(
"%s;#it{P}_{track} (GeV/#it{c});#it{E}_{cluster} / #it{P}_{track} #it{c};counts", histname.Data());
333 histname = TString::Format(
"%s/histNTracks_%d", groupname.Data(), cent);
334 histtitle = TString::Format(
"%s;number of tracks;events", histname.Data());
359 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;
361 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
362 groupname = jetCont->GetName();
370 histname = TString::Format(
"%s/fhnJetSparse", groupname.Data());
371 histtitle = histname +
";Multiplicity;#it{p}_{T,jet}^{uncorr} (GeV/#it{c});#it{p}_{T,leading} (GeV/#it{c};#it{E}_{leading} (GeV);#eta_{jet};#phi_{jet};#it{F}_{cross};#it{z}_{leading};#it{A}_{jet};#it{NEF};#it{N}_{constit};it{N}_{neu};it{N}_{chrg}";
372 Int_t nbins13[13] = {300,
fNbins,
fNbins,
fNbins,24,72,20,20,20,20,100,100,100};
373 Double_t min13[13] = {0,
fMinBinPt,
fMinBinPt,
fMinBinPt,-1.2, -0.5*
pi,0,0,0,0,0,0,0};
374 Double_t max13[13] = {300,
fMaxBinPt,
fMaxBinPt,
fMaxBinPt,1.2,1.5*
pi,1,1,1,1,1,1,1};
380 histname = TString::Format(
"%s/histJetPt_%d", groupname.Data(), cent);
381 histtitle = TString::Format(
"%s;#it{p}_{T,jet} (GeV/#it{c});counts", histname.Data());
384 histname = TString::Format(
"%s/histJetClusterEnergy_%d", groupname.Data(), cent);
385 histtitle = TString::Format(
"%s;#it{E}_{JetClus} (GeV);counts", histname.Data());
388 histname = TString::Format(
"%s/histJetTrkPt_%d", groupname.Data(), cent);
389 histtitle = TString::Format(
"%s;#it{p}_{T,JetTrk} (GeV/#it{c});counts", histname.Data());
392 histname = TString::Format(
"%s/histJetNEFvJetPt_%d", groupname.Data(), cent);
393 histtitle = TString::Format(
"%s;#it{p}_{T,Jet};NEF", histname.Data());
396 histname = TString::Format(
"%s/histNumbJetConstvJetPt_%d", groupname.Data(), cent);
397 histtitle = TString::Format(
"%s;#it{p}_{T,Jet};NumberofJetConstit", histname.Data());
400 histname = TString::Format(
"%s/histJetFF_%d", groupname.Data(), cent);
401 histtitle = TString::Format(
"%s;Z=#it{p}_{T,leading} / #it{p}_{T,Jet};counts", histname.Data());
404 histname = TString::Format(
"%s/histJetZvJetPt_%d", groupname.Data(), cent);
405 histtitle = TString::Format(
"%s;#it{p}_{T,Jet};Z=#it{p}_{T,Trk} / #it{p}_{T,Jet}", histname.Data());
412 histname = TString::Format(
"%s/histFCrossvZleading_%d", groupname.Data(), cent);
413 histtitle = TString::Format(
"%s;#it{z}_{leading};#it{F}_{Cross}", histname.Data());
417 histname = TString::Format(
"%s/fHistJetJetPatchE_%d", groupname.Data(), cent);
418 histtitle = TString::Format(
"%s;#it{E}_{JetGammaPatch} (GeV);counts", histname.Data());
421 histname = TString::Format(
"%s/fHistJetGammaPatchE_%d", groupname.Data(), cent);
422 histtitle = TString::Format(
"%s;#it{E}_{JetGammaPatch} (GeV);counts", histname.Data());
425 histname = TString::Format(
"%s/fHistJetJetPatchPt_%d", groupname.Data(), cent);
426 histtitle = TString::Format(
"%s;#it{p}_{T,JetJetPatch} (GeV/#it{c});counts", histname.Data());
429 histname = TString::Format(
"%s/fHistJetGammaPatchPt_%d", groupname.Data(), cent);
430 histtitle = TString::Format(
"%s;#it{p}_{T,JetGammaPatch} (GeV/#it{c});counts", histname.Data());
433 histname = TString::Format(
"%s/fHistTriggerPatchE_%d", groupname.Data(), cent);
434 histtitle = TString::Format(
"%s;#it{E}_{TriggerPatch} (GeV);counts", histname.Data());
437 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiJE_%d", groupname.Data(), cent);
438 histtitle = TString::Format(
"%s;#it{#phi}_{jet} - #it{#phi}_{JE,patch};#it{#eta}_{Jet} - #it{#eta}_{JE,patch};counts", histname.Data());
441 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiGA_%d", groupname.Data(), cent);
442 histtitle = TString::Format(
"%s;#it{#phi}_{jet} - #it{#phi}_{GA,patch};#it{#eta}_{Jet} - #it{#eta}_{GA,patch};counts", histname.Data());
445 histname = TString::Format(
"%s/fHistJetEPatchEJE_%d", groupname.Data(), cent);
446 histtitle = TString::Format(
"%s;#it{E_{JE,patch}}#it{E_{Jet,UnCorr}};counts", histname.Data());
449 histname = TString::Format(
"%s/fHistJetEPatchEGA_%d", groupname.Data(), cent);
450 histtitle = TString::Format(
"%s;#it{E_{GA,patch}};#it{E_{Jet,UnCorr}};counts", histname.Data());
454 histname = TString::Format(
"%s/histJetArea_%d", groupname.Data(), cent);
455 histtitle = TString::Format(
"%s;#it{A}_{jet};counts", histname.Data());
458 histname = TString::Format(
"%s/histJetPhi_%d", groupname.Data(), cent);
459 histtitle = TString::Format(
"%s;#it{#phi}_{jet};counts", histname.Data());
462 histname = TString::Format(
"%s/histJetEta_%d", groupname.Data(), cent);
463 histtitle = TString::Format(
"%s;#it{#eta}_{jet};counts", histname.Data());
466 histname = TString::Format(
"%s/histJetClusterPhi_%d", groupname.Data(), cent);
467 histtitle = TString::Format(
"%s;#it{#phi}_{JetClus};counts", histname.Data());
470 histname = TString::Format(
"%s/histJetClusterEta_%d", groupname.Data(), cent);
471 histtitle = TString::Format(
"%s;#it{#eta}_{JetClus};counts", histname.Data());
474 histname = TString::Format(
"%s/histNJets_%d", groupname.Data(), cent);
475 histtitle = TString::Format(
"%s;number of jets;events", histname.Data());
484 histname = TString::Format(
"%s/histJetCorrPt_%d", groupname.Data(), cent);
485 histtitle = TString::Format(
"%s;#it{p}_{T,jet}^{corr} (GeV/#it{c});counts", histname.Data());
523 while ((jetCont = static_cast<AliJetContainer*>(next()))) {
524 groupname = jetCont->GetName();
526 for(
auto jet : jetCont->
accepted()) {
530 TLorentzVector leadPart;
533 if (z == 1 || (z > 1 && z - 1 < 1e-3)) z = 0.999;
535 histname = TString::Format(
"%s/histJetPt_%d", groupname.Data(),
fCentBin);
538 histname = TString::Format(
"%s/histJetClusterEnergy_%d", groupname.Data(),
fCentBin);
541 histname = TString::Format(
"%s/histJetArea_%d", groupname.Data(),
fCentBin);
544 histname = TString::Format(
"%s/histJetPhi_%d", groupname.Data(),
fCentBin);
547 histname = TString::Format(
"%s/histJetEta_%d", groupname.Data(),
fCentBin);
550 histname = TString::Format(
"%s/histJetNEFvJetPt_%d", groupname.Data(),
fCentBin);
554 histname = TString::Format(
"%s/histNumbJetConstvJetPt_%d", groupname.Data(),
fCentBin);
557 histname = TString::Format(
"%s/histJetFF_%d", groupname.Data(),
fCentBin);
560 Double_t MatchedEta = 0.04, MatchedPhi = 0.04;
567 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
568 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",GetName(), cls.GetName(),
"EmcalTriggers"));
574 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
580 AliEMCALTriggerPatchInfo *currentpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
583 if(currentpatch->IsGammaLowRecalc() || currentpatch->IsGammaLowSimple()){
584 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiGA_%d", groupname.Data(),
fCentBin);
585 fHistManager.
FillTH2(histname, jet->Phi() - currentpatch->GetPhiGeo(), jet->Eta() - currentpatch->GetEtaGeo());
586 histname = TString::Format(
"%s/fHistJetEPatchEGA_%d", groupname.Data(),
fCentBin);
589 if(jet->Phi() - currentpatch->GetPhiGeo() <= MatchedPhi && jet->Eta() - currentpatch->GetEtaGeo() <= MatchedEta){
590 histname = TString::Format(
"%s/fHistJetGammaPatchE_%d", groupname.Data(),
fCentBin);
592 histname = TString::Format(
"%s/fHistJetGammaPatchPt_%d", groupname.Data(),
fCentBin);
598 if(currentpatch->IsJetLowRecalc() || currentpatch->IsJetLowSimple()){
599 histname = TString::Format(
"%s/fHistDeltaEtaDeltaPhiJE_%d", groupname.Data(),
fCentBin);
600 fHistManager.
FillTH2(histname, jet->Phi() - currentpatch->GetPhiGeo(), jet->Eta() - currentpatch->GetEtaGeo());
601 histname = TString::Format(
"%s/fHistJetEPatchEJE_%d", groupname.Data(),
fCentBin);
604 if(jet->Phi() - currentpatch->GetPhiGeo() <= MatchedPhi && jet->Eta() - currentpatch->GetEtaGeo() <= MatchedEta){
605 histname = TString::Format(
"%s/fHistJetJetPatchE_%d", groupname.Data(),
fCentBin);
607 histname = TString::Format(
"%s/fHistJetJetPatchPt_%d", groupname.Data(),
fCentBin);
619 for (
Int_t it = 0; it < jet->GetNumberOfTracks(); it++) {
620 AliVParticle *JetTrk = jet->TrackAt(it, tracks->GetArray());
623 histname = TString::Format(
"%s/histJetTrkPt_%d", groupname.Data(),
fCentBin);
626 Z_part =
GetZ(JetTrk->Px(),JetTrk->Py(),JetTrk->Pz(),jet->Px(),jet->Py(),jet->Pz());
628 histname = TString::Format(
"%s/histJetZvJetPt_%d", groupname.Data(),
fCentBin);
637 for(
auto cluster : JetCluster->
accepted()) {
639 cluster->GetMomentum(nPart,
fVertex);
641 histname = TString::Format(
"%s/histJetClusterEnergy_%d", groupname.Data(),
fCentBin);
643 histname = TString::Format(
"%s/histJetClusterPhi_%d", groupname.Data(),
fCentBin);
645 histname = TString::Format(
"%s/histJetClusterEta_%d", groupname.Data(),
fCentBin);
647 histname = TString::Format(
"%s/histFCrossvZleading_%d", groupname.Data(),
fCentBin);
657 AliVParticle *leadingParticle = 0x0;
658 AliVCluster *leadingCluster = 0x0;
661 leadingCluster = jet->GetLeadingCluster();
663 leadingclusterE = leadingCluster->E();
667 AliVParticle* leadingTrk = jet->GetLeadingTrack();
669 leadingtrackpT = leadingTrk->Pt();
680 Double_t x[13]={TrackMultiplicity,jet->Pt(),leadingtrackpT,leadingclusterE,jet->Eta(),jet->Phi(),JetFCrossLeading,z,jet->Area(),jet->NEF(),Numb,NumbNeu,NumbChrg};
681 histname = TString::Format(
"%s/fhnJetSparse", groupname.Data());
685 histname = TString::Format(
"%s/histJetCorrPt_%d", groupname.Data(),
fCentBin);
689 histname = TString::Format(
"%s/histNJets_%d", groupname.Data(),
fCentBin);
706 while ((partCont = static_cast<AliParticleContainer*>(next()))) {
707 groupname = partCont->GetName();
713 histname = TString::Format(
"%s/histTrackPt_%d", groupname.Data(),
fCentBin);
716 histname = TString::Format(
"%s/histTrackPhi_%d", groupname.Data(),
fCentBin);
719 histname = TString::Format(
"%s/histTrackEta_%d", groupname.Data(),
fCentBin);
722 if (partCont->GetLoadedClass()->InheritsFrom(
"AliVTrack")) {
723 const AliVTrack* track =
static_cast<const AliVTrack*
>(
part);
725 histname = TString::Format(
"%s/fHistDeltaEtaPt_%d", groupname.Data(),
fCentBin);
728 histname = TString::Format(
"%s/fHistDeltaPhiPt_%d", groupname.Data(),
fCentBin);
731 histname = TString::Format(
"%s/fHistDeltaPtvsPt_%d", groupname.Data(),
fCentBin);
735 Int_t iCluster = track->GetEMCALcluster();
739 histname = TString::Format(
"%s/fHistEoverPvsP_%d", groupname.Data(),
fCentBin);
747 histname = TString::Format(
"%s/histNTracks_%d", groupname.Data(),
fCentBin);
762 while ((clusCont = static_cast<AliClusterContainer*>(next()))) {
763 groupname = clusCont->GetName();
766 for(
auto cluster : clusCont->
all()) {
767 if (!cluster)
continue;
770 histname = TString::Format(
"%s/fHistFcrossvEonline_%d", groupname.Data(),
fCentBin);
773 if (cluster->GetIsExotic()) {
774 histname = TString::Format(
"%s/histClusterEnergyExotic_%d", groupname.Data(),
fCentBin);
780 for(
auto cluster : clusCont->
accepted()) {
781 if (!cluster)
continue;
785 cluster->GetMomentum(nPart,
fVertex);
787 histname = TString::Format(
"%s/histClusterEnergy_%d", groupname.Data(),
fCentBin);
790 histname = TString::Format(
"%s/histClusterNonLinCorrEnergy_%d", groupname.Data(),
fCentBin);
793 histname = TString::Format(
"%s/histClusterHadCorrEnergy_%d", groupname.Data(),
fCentBin);
796 histname = TString::Format(
"%s/histClusterPhi_%d", groupname.Data(),
fCentBin);
799 histname = TString::Format(
"%s/histClusterEta_%d", groupname.Data(),
fCentBin);
803 histname = TString::Format(
"%s/histNClusters_%d", groupname.Data(),
fCentBin);
824 for (
Short_t pos = 0; pos < ncells; pos++) {
861 if (!cls.InheritsFrom(
"AliEMCALTriggerPatchInfo")) {
862 AliError(Form(
"%s: Objects of type %s in %s are not inherited from AliEMCALTriggerPatchInfo!",GetName(), cls.GetName(),
"EmcalTriggers"));
868 AliError(Form(
"%s: Unable to get trigger patch container with name %s. Aborting", GetName(),
"EmcalTriggers"));
872 AliEMCALTriggerPatchInfo *recpatch =
static_cast<AliEMCALTriggerPatchInfo *
>(p);
944 cout<<
"*****************************"<<endl;
945 cout<<
"******* Task Finished *******"<<endl;
946 cout<<
"*****************************"<<endl;
954 return (trkPx*jetPx+trkPy*jetPy+trkPz*jetPz)/(jetPx*jetPx+jetPy*jetPy+jetPz*jetPz);
966 Int_t nCellCount[10] = {0};
971 for (
Short_t pos = 0; pos < ncells; pos++) {
974 Int_t sMod =
fGeom->GetSuperModuleNumber(cellId);
976 if(amp<0.1)
continue;
981 for(
Int_t i=0; i<=9; i++){
992 Int_t AbsIdseed = -1;
994 for (
Int_t i = 0; i < cluster->GetNCells(); i++) {
995 if (cells->GetCellAmplitude(cluster->GetCellAbsId(i)) > Eseed) {
996 Eseed = cells->GetCellAmplitude(cluster->GetCellAbsId(i));
997 AbsIdseed = cluster->GetCellAbsId(i);
1005 Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1;
1006 fGeom->GetCellIndex(AbsIdseed,imod,iTower,iIphi,iIeta);
1007 fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi,iIeta,iphi,ieta);
1014 if (iphi < AliEMCALGeoParams::fgkEMCALRows-1) {
1015 absID1 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
1018 absID2 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
1026 if (ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2)) {
1027 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
1028 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
1030 else if (ieta == 0 && imod%2) {
1031 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
1032 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1);
1035 if (ieta < AliEMCALGeoParams::fgkEMCALCols-1) {
1036 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
1039 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
1043 Double_t ecell1 = cells->GetCellAmplitude(absID1);
1044 Double_t ecell2 = cells->GetCellAmplitude(absID2);
1045 Double_t ecell3 = cells->GetCellAmplitude(absID3);
1046 Double_t ecell4 = cells->GetCellAmplitude(absID4);
1048 Double_t Ecross = ecell1 + ecell2 + ecell3 + ecell4;
1050 Double_t Fcross = 1 - Ecross/Eseed;
1076 const Int_t dim = count;
1083 while(c<dim && i<32){
1088 hnTitle += Form(
";%s",label.Data());
1096 return new THnSparseF(name, hnTitle.Data(), dim,
nbins, xmin, xmax);
1114 label =
"V0 centrality (%)";
1120 label =
"Multiplicity";
1126 label =
"Jet p_{T}";
1133 label =
"Track p_{T}";
1140 label =
"Cluster E";
1161 label =
"#it{p}_{T,track}^{leading}";
1168 label =
"Matched Trigger Amp";
1175 label =
"#Delta#eta";
1182 label =
"#Delta#phi";
1189 label =
"F_{cross}";
1196 label =
"z_{leading}";
1203 label =
"#it{A}_{jet}";
1217 label =
"Numb Constit";
1224 label =
"Numb Chrg Constit";
1231 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
void FillTHnSparse(const char *name, const double *x, double weight=1., Option_t *opt="")
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
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.
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