5 #include <TClonesArray.h>
10 #include <THnSparse.h>
12 #include <TLorentzVector.h>
14 #include "AliVCluster.h"
15 #include "AliVTrack.h"
16 #include "AliVVZERO.h"
21 #include "AliAODCaloTrigger.h"
22 #include "AliEMCALGeometry.h"
23 #include "AliVCaloCells.h"
27 #include "AliEMCALTriggerPatchInfo.h"
28 #include "AliAODHeader.h"
43 fMaxPatchADCEnergy(0),
46 fMainTrigCat(kTriggerLevel1Jet),
47 fMainTrigSimple(kFALSE),
50 fHistRhovsCentFull(0),
51 fHistRhovsCentCharged(0),
53 fh3PtEtaPhiTracksOnEmcal(0),
54 fh3PtEtaPhiTracksToProp(0),
55 fh3PtEtaPhiTracksProp(0),
56 fh3PtEtaPhiTracksNoProp(0),
58 fh2CentPtJetCharged(0),
59 fh3PtEtaPhiJetFull(0),
60 fh3PtEtaPhiJetCharged(0),
63 fh3PtEtaAreaJetFull(0),
64 fh3PtEtaAreaJetCharged(0),
65 fh2PtNConstituentsCharged(0),
66 fh2PtNConstituents(0),
67 fh2PtMeanPtConstituentsCharged(0),
68 fh2PtMeanPtConstituentsNeutral(0),
71 fh2NEFNConstituentsCharged(0),
72 fh2NEFNConstituentsNeutral(0),
75 fh2PtLeadJet1VsLeadJet2(0),
77 fh3PtLeadJet1VsPatchEnergy(0),
78 fh3PtLeadJet2VsPatchEnergy(0),
79 fh3PtLeadJet1PatchEnergyVZEROAmp(0),
80 fh3PtLeadJet1RawPatchEnergyVZEROAmp(0),
81 fh3PatchEnergyEtaPhiCenterJ1(0),
82 fh3PatchEnergyEtaPhiCenterJ2(0),
83 fh3PatchEnergyEtaPhiCenterJ1J2(0),
84 fh3PatchADCEnergyEtaPhiCenterJ1(0),
85 fh3PatchADCEnergyEtaPhiCenterJ2(0),
86 fh3PatchADCEnergyEtaPhiCenterJ1J2(0),
87 fh3PatchADCEnergyEtaPhiCenterAll(0),
90 fh2CellEnergyVsTime(0),
91 fh3EClusELeadingCellVsTime(0),
96 SetMakeGeneralHistograms(kTRUE);
105 fContainerCharged(1),
107 fMaxPatchADCEnergy(0),
110 fMainTrigCat(kTriggerLevel1Jet),
111 fMainTrigSimple(kFALSE),
114 fHistRhovsCentFull(0),
115 fHistRhovsCentCharged(0),
116 fh3PtEtaPhiTracks(0),
117 fh3PtEtaPhiTracksOnEmcal(0),
118 fh3PtEtaPhiTracksToProp(0),
119 fh3PtEtaPhiTracksProp(0),
120 fh3PtEtaPhiTracksNoProp(0),
122 fh2CentPtJetCharged(0),
123 fh3PtEtaPhiJetFull(0),
124 fh3PtEtaPhiJetCharged(0),
126 fh2NJetsPtCharged(0),
127 fh3PtEtaAreaJetFull(0),
128 fh3PtEtaAreaJetCharged(0),
129 fh2PtNConstituentsCharged(0),
130 fh2PtNConstituents(0),
131 fh2PtMeanPtConstituentsCharged(0),
132 fh2PtMeanPtConstituentsNeutral(0),
135 fh2NEFNConstituentsCharged(0),
136 fh2NEFNConstituentsNeutral(0),
139 fh2PtLeadJet1VsLeadJet2(0),
140 fh3EEtaPhiCluster(0),
141 fh3PtLeadJet1VsPatchEnergy(0),
142 fh3PtLeadJet2VsPatchEnergy(0),
143 fh3PtLeadJet1PatchEnergyVZEROAmp(0),
144 fh3PtLeadJet1RawPatchEnergyVZEROAmp(0),
145 fh3PatchEnergyEtaPhiCenterJ1(0),
146 fh3PatchEnergyEtaPhiCenterJ2(0),
147 fh3PatchEnergyEtaPhiCenterJ1J2(0),
148 fh3PatchADCEnergyEtaPhiCenterJ1(0),
149 fh3PatchADCEnergyEtaPhiCenterJ2(0),
150 fh3PatchADCEnergyEtaPhiCenterJ1J2(0),
151 fh3PatchADCEnergyEtaPhiCenterAll(0),
154 fh2CellEnergyVsTime(0),
155 fh3EClusELeadingCellVsTime(0),
187 TString firedTrigClass = InputEvent()->GetFiredTriggerClasses();
189 if(!firedTrigClass.Contains(trigType1.Data()) || !firedTrigClass.Contains(trigType2.Data()) )
195 else if(
fTriggerClass.Contains(trigType1.Data()) && firedTrigClass.Contains(trigType2.Data()))
216 if(patch->IsJetLow() && !patch->IsJetHigh()) {
220 else if(patch->IsJetHigh() && !patch->IsJetLow()) {
224 else if(patch->IsJetHigh() && patch->IsJetLow()) {
238 Bool_t oldStatus = TH1::AddDirectoryStatus();
239 TH1::AddDirectory(kFALSE);
241 fhNEvents =
new TH1F(
"fhNEvents",
"fhNEvents;selection;N_{evt}",5,0,5);
244 fhTriggerbit =
new TProfile(
"fhTriggerbit",
"fhTriggerbit;;TriggerBit",1,0,1);
257 Int_t fgkNCentBins = 21;
261 for(
Int_t i=0; i<=fgkNCentBins; i++) binsCent[i]=(
Double_t)kMinCent + (kMaxCent-kMinCent)/fgkNCentBins*(
Double_t)i ;
262 binsCent[fgkNCentBins-1] = 100.5;
263 binsCent[fgkNCentBins] = 101.5;
265 Int_t fgkNdEPBins = 18*8;
267 Float_t kMaxdEP = 1.*TMath::Pi()/2.;
269 for(
Int_t i=0; i<=fgkNdEPBins; i++) binsdEP[i]=(
Double_t)kMindEP + (kMaxdEP-kMindEP)/fgkNdEPBins*(
Double_t)i ;
271 Int_t fgkNPtBins = 200;
275 for(
Int_t i=0; i<=fgkNPtBins; i++) binsPt[i]=(
Double_t)kMinPt + (kMaxPt-kMinPt)/fgkNPtBins*(
Double_t)i ;
277 Int_t fgkNPhiBins = 18*8;
279 Float_t kMaxPhi = 2.*TMath::Pi();
281 for(
Int_t i=0; i<=fgkNPhiBins; i++) binsPhi[i]=(
Double_t)kMinPhi + (kMaxPhi-kMinPhi)/fgkNPhiBins*(
Double_t)i ;
283 Int_t fgkNEtaBins = 100;
287 for(
Int_t i=0; i<=fgkNEtaBins; i++) binsEta[i]=(
Double_t)fgkEtaMin + (fgkEtaMax-fgkEtaMin)/fgkNEtaBins*(
Double_t)i ;
289 Int_t fgkNAreaBins = 100;
293 for(
Int_t i=0; i<=fgkNAreaBins; i++) binsArea[i]=(
Double_t)kMinArea + (kMaxArea-kMinArea)/fgkNAreaBins*(
Double_t)i ;
295 Int_t fgkNConstBins = 100;
299 for(
Int_t i=0; i<=fgkNConstBins; i++) binsConst[i]=(
Double_t)kMinConst + (kMaxConst-kMinConst)/fgkNConstBins*(
Double_t)i ;
301 Int_t fgkNMeanPtBins = 100;
305 for(
Int_t i=0; i<=fgkNMeanPtBins; i++) binsMeanPt[i]=(
Double_t)kMinMeanPt + (kMaxMeanPt-kMinMeanPt)/fgkNMeanPtBins*(
Double_t)i ;
307 Int_t fgkNNEFBins = 101;
311 for(
Int_t i=0; i<=fgkNNEFBins; i++) binsNEF[i]=(
Double_t)kMinNEF + (kMaxNEF-kMinNEF)/fgkNNEFBins*(
Double_t)i ;
313 Int_t fgkNzBins = 101;
319 Int_t fgkNJetTypeBins = 2;
323 for(
Int_t i=0; i<=fgkNJetTypeBins; i++) binsJetType[i]=(
Double_t)kMinJetType + (kMaxJetType-kMinJetType)/fgkNJetTypeBins*(
Double_t)i ;
325 Int_t fgkNTimeBins = 100;
329 for(
Int_t i=0; i<=fgkNTimeBins; i++) binsTime[i]=(
Double_t)kMinTime + (kMaxTime-kMinTime)/fgkNTimeBins*(
Double_t)i ;
331 Int_t fgkNVZEROBins = 100;
335 for(
Int_t i=0; i<=fgkNVZEROBins; i++) binsVZERO[i]=(
Double_t)kMinVZERO + (kMaxVZERO-kMinVZERO)/fgkNVZEROBins*(
Double_t)i ;
338 enBinEdges[0][0] = 1.;
339 enBinEdges[0][1] = 0.1;
340 enBinEdges[1][0] = 5.;
341 enBinEdges[1][1] = 0.5;
342 enBinEdges[2][0] = 100.;
343 enBinEdges[2][1] = 1.;
346 const Float_t enmax1 = enBinEdges[0][0];
347 const Float_t enmin2 = enmax1 ;
348 const Float_t enmax2 = enBinEdges[1][0];
349 const Float_t enmin3 = enmax2 ;
350 const Float_t enmax3 = enBinEdges[2][0];
351 const Int_t nbin11 = (int)((enmax1-enmin1)/enBinEdges[0][1]);
352 const Int_t nbin12 = (int)((enmax2-enmin2)/enBinEdges[1][1])+nbin11;
353 const Int_t nbin13 = (int)((enmax3-enmin3)/enBinEdges[2][1])+nbin12;
355 Int_t fgkNEnBins=nbin13;
357 for(
Int_t i=0; i<=fgkNEnBins; i++) {
358 if(i<=nbin11) binsEn[i]=(
Double_t)enmin1 + (enmax1-enmin1)/nbin11*(
Double_t)i ;
359 if(i<=nbin12 && i>nbin11) binsEn[i]=(
Double_t)enmin2 + (enmax2-enmin2)/(nbin12-nbin11)*((
Double_t)i-(
Double_t)nbin11) ;
360 if(i<=nbin13 && i>nbin12) binsEn[i]=(
Double_t)enmin3 + (enmax3-enmin3)/(nbin13-nbin12)*((
Double_t)i-(
Double_t)nbin12) ;
363 fh3PtEtaPhiTracks =
new TH3F(
"fh3PtEtaPhiTracks",
"fh3PtEtaPhiTracks;#it{p}_{T}^{track}_{vtx};#eta_{vtx};#varphi_{vtx}",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
366 fh3PtEtaPhiTracksOnEmcal =
new TH3F(
"fh3PtEtaPhiTracksOnEmcal",
"fh3PtEtaPhiTracksOnEmcal;#it{p}_{T}^{track}_{emc};#eta_{emc};#varphi_{emc}",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
369 fh3PtEtaPhiTracksToProp =
new TH3F(
"fh3PtEtaPhiTracksToProp",
"fh3PtEtaPhiTracksToProp;#it{p}_{T}^{track}_{vtx};#eta_{vtx};#varphi_{vtx}",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
372 fh3PtEtaPhiTracksProp =
new TH3F(
"fh3PtEtaPhiTracksProp",
"fh3PtEtaPhiTracksProp;#it{p}_{T}^{track}_{vtx};#eta_{vtx};#varphi_{vtx}",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
375 fh3PtEtaPhiTracksNoProp =
new TH3F(
"fh3PtEtaPhiTracksNoProp",
"fh3PtEtaPhiTracksNoProp;#it{p}_{T}^{track}_{vtx};#eta_{vtx};#varphi_{vtx}",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
378 fh2CentPtJetFull =
new TH2F(
"fh2CentPtJetFull",
"fh2CentPtJetFull;cent;#it{p}_{T}^{jet}",fgkNCentBins,binsCent,fgkNPtBins,binsPt);
381 fh2CentPtJetCharged =
new TH2F(
"fh2CentPtJetCharged",
"fh2CentPtJetCharged;cent;#it{p}_{T}^{jet}",fgkNCentBins,binsCent,fgkNPtBins,binsPt);
384 fh3PtEtaPhiJetFull =
new TH3F(
"fh3PtEtaPhiJetFull",
"fh3PtEtaPhiJetFull;#it{p}_{T}^{jet};#eta;#varphi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
387 fh3PtEtaPhiJetCharged =
new TH3F(
"fh3PtEtaPhiJetCharged",
"fh3PtEtaPhiJetCharged;#it{p}_{T}^{jet};#eta;#varphi",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
390 fh2NJetsPtFull =
new TH2F(
"fh2NJetsPtFull",
"fh2NJetsPtFull;N_{jets};#it{p}_{T}^{jet}",20,-0.5,19.5,fgkNPtBins,binsPt);
393 fh2NJetsPtCharged =
new TH2F(
"fh2NJetsPtCharged",
"fh2NJetsPtCharged;N_{jets};#it{p}_{T}^{jet}",20,-0.5,19.5,fgkNPtBins,binsPt);
396 fh3PtEtaAreaJetFull =
new TH3F(
"fh3PtEtaAreaJetFull",
"fh3PtEtaAreaJetFull;#it{p}_{T}^{jet};#eta;A",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNAreaBins,binsArea);
399 fh3PtEtaAreaJetCharged =
new TH3F(
"fh3PtEtaAreaJetCharged",
"fh3PtEtaAreaJetCharged;#it{p}_{T}^{jet};#eta;A",fgkNPtBins,binsPt,fgkNEtaBins,binsEta,fgkNAreaBins,binsArea);
402 fh2PtNConstituentsCharged =
new TH2F(
"fh2PtNConstituentsCharged",
"fh2PtNConstituentsCharged;#it{p}_{T}^{jet};N_{charged constituents}",fgkNPtBins,binsPt,fgkNConstBins,binsConst);
405 fh2PtNConstituents =
new TH2F(
"fh2PtNConstituents",
"fh2PtNConstituents;#it{p}_{T}^{jet};N_{constituents}",fgkNPtBins,binsPt,fgkNConstBins,binsConst);
408 fh2PtMeanPtConstituentsCharged =
new TH2F(
"fh2PtMeanPtConstituentsCharged",
"fh2PtMeanPtConstituentsCharged;#it{p}_{T}^{jet};charged #langle #it{p}_{T} #rangle",fgkNPtBins,binsPt,fgkNMeanPtBins,binsMeanPt);
411 fh2PtMeanPtConstituentsNeutral =
new TH2F(
"fh2PtMeanPtConstituentsNeutral",
"fh2PtMeanPtConstituentsNeutral;#it{p}_{T}^{jet};neutral langle #it{p}_{T} #rangle",fgkNPtBins,binsPt,fgkNMeanPtBins,binsMeanPt);
414 fh2PtNEF =
new TH2F(
"fh2PtNEF",
"fh2PtNEF;#it{p}_{T}^{jet};NEF",fgkNPtBins,binsPt,fgkNNEFBins,binsNEF);
417 fh3NEFEtaPhi =
new TH3F(
"fh3NEFEtaPhi",
"fh3NEFEtaPhi;NEF;#eta;#varphi",fgkNNEFBins,binsNEF,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
420 fh2NEFNConstituentsCharged =
new TH2F(
"fh2NEFNConstituentsCharged",
"fh2NEFNConstituentsCharged;NEF;N_{charged constituents}",fgkNNEFBins,binsNEF,fgkNConstBins,binsConst);
423 fh2NEFNConstituentsNeutral =
new TH2F(
"fh2NEFNConstituentsNeutral",
"fh2NEFNConstituentsNeutral;NEF;N_{clusters}",fgkNNEFBins,binsNEF,fgkNConstBins,binsConst);
426 fh2Ptz =
new TH2F(
"fh2Ptz",
"fh2Ptz;#it{p}_{T}^{jet};z=p_{t,trk}^{proj}/p_{jet}",fgkNPtBins,binsPt,fgkNzBins,binsz);
429 fh2PtzCharged =
new TH2F(
"fh2PtzCharged",
"fh2Ptz;#it{p}_{T}^{ch jet};z=p_{t,trk}^{proj}/p_{ch jet}",fgkNPtBins,binsPt,fgkNzBins,binsz);
432 fh2PtLeadJet1VsLeadJet2 =
new TH2F(
"fh2PtLeadJet1VsLeadJet2",
"fh2PtLeadJet1VsLeadJet2;#it{p}_{T}^{jet 1};#it{p}_{T}^{jet 2}",fgkNPtBins,binsPt,fgkNPtBins,binsPt);
435 fh3EEtaPhiCluster =
new TH3F(
"fh3EEtaPhiCluster",
"fh3EEtaPhiCluster;E_{clus};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
438 fh3PtLeadJet1VsPatchEnergy =
new TH3F(
"fh3PtLeadJet1VsPatchEnergy",
"fh3PtLeadJet1VsPatchEnergy;#it{p}_{T}^{jet 1};Amplitude_{patch};trig type",fgkNPtBins,binsPt,fgkNPtBins,binsPt,fgkNJetTypeBins,binsJetType);
440 fh3PtLeadJet2VsPatchEnergy =
new TH3F(
"fh3PtLeadJet2VsPatchEnergy",
"fh3PtLeadJet2VsPatchEnergy;#it{p}_{T}^{jet 1};Amplitude_{patch};trig type",fgkNPtBins,binsPt,fgkNPtBins,binsPt,fgkNJetTypeBins,binsJetType);
443 fh3PtLeadJet1PatchEnergyVZEROAmp =
new TH3F(
"fh3PtLeadJet1PatchEnergyVZEROAmp",
"fh3PtLeadJet1VsPatchEnergyVZEROAmp;#it{p}_{T}^{jet 1};Amplitude_{patch};VZERO amp",fgkNPtBins,binsPt,fgkNPtBins,binsPt,fgkNVZEROBins,binsVZERO);
445 fh3PtLeadJet1RawPatchEnergyVZEROAmp =
new TH3F(
"fh3PtLeadJet1RawPatchEnergyVZEROAmp",
"fh3PtLeadJet1RawPatchEnergyVZEROAmp;#it{p}_{T}^{jet 1};ADC Amplitude_{patch} (GeV);VZERO amp",fgkNPtBins,binsPt,fgkNPtBins,binsPt,fgkNVZEROBins,binsVZERO);
448 fh3PatchEnergyEtaPhiCenterJ1 =
new TH3F(
"fh3PatchEnergyEtaPhiCenterJ1",
"fh3PatchEnergyEtaPhiCenterJ1;E_{patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
451 fh3PatchEnergyEtaPhiCenterJ2 =
new TH3F(
"fh3PatchEnergyEtaPhiCenterJ2",
"fh3PatchEnergyEtaPhiCenterJ2;E_{patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
454 fh3PatchEnergyEtaPhiCenterJ1J2 =
new TH3F(
"fh3PatchEnergyEtaPhiCenterJ1J2",
"fh3PatchEnergyEtaPhiCenterJ1J2;E_{patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
457 fh3PatchADCEnergyEtaPhiCenterJ1 =
new TH3F(
"fh3PatchADCEnergyEtaPhiCenterJ1",
"fh3PatchADCEnergyEtaPhiCenterJ1;E_{ADC,patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
460 fh3PatchADCEnergyEtaPhiCenterJ2 =
new TH3F(
"fh3PatchADCEnergyEtaPhiCenterJ2",
"fh3PatchADCEnergyEtaPhiCenterJ2;E_{ADC,patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
463 fh3PatchADCEnergyEtaPhiCenterJ1J2 =
new TH3F(
"fh3PatchADCEnergyEtaPhiCenterJ1J2",
"fh3PatchADCEnergyEtaPhiCenterJ1J2;E_{ADC,patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
466 fh3PatchADCEnergyEtaPhiCenterAll =
new TH3F(
"fh3PatchADCEnergyEtaPhiCenterAll",
"fh3PatchADCEnergyEtaPhiCenterAll;E_{ADC,patch};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
469 fh3EEtaPhiCell =
new TH3F(
"fh3EEtaPhiCell",
"fh3EEtaPhiCell;E_{cell};#eta;#phi",fgkNEnBins,binsEn,fgkNEtaBins,binsEta,fgkNPhiBins,binsPhi);
472 fh2ECellVsCent =
new TH2F(
"fh2ECellVsCent",
"fh2ECellVsCent;centrality;E_{cell}",101,-1,100,500,0.,5.);
475 fh2CellEnergyVsTime =
new TH2F(
"fh2CellEnergyVsTime",
"fh2CellEnergyVsTime;E_{cell};time",fgkNEnBins,binsEn,fgkNTimeBins,binsTime);
478 fh3EClusELeadingCellVsTime =
new TH3F(
"fh3EClusELeadingCellVsTime",
"fh3EClusELeadingCellVsTime;E_{cluster};E_{leading cell};time_{leading cell}",fgkNEnBins,binsEn,fgkNEnBins,binsEn,fgkNTimeBins,binsTime);
481 fh3JetReacCent =
new TH3F(
"fh3JetReacCent",
"fh3JetReacCent;E_{Jet};Centrality;dEP",fgkNEnBins,binsEn,fgkNCentBins,binsCent,fgkNdEPBins,binsdEP);
501 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
505 TH1::AddDirectory(oldStatus);
510 if(binsdEP)
delete [] binsdEP;
511 if(binsEn)
delete [] binsEn;
512 if(binsPt)
delete [] binsPt;
513 if(binsPhi)
delete [] binsPhi;
514 if(binsEta)
delete [] binsEta;
515 if(binsArea)
delete [] binsArea;
516 if(binsConst)
delete [] binsConst;
517 if(binsMeanPt)
delete [] binsMeanPt;
518 if(binsNEF)
delete [] binsNEF;
519 if(binsz)
delete [] binsz;
520 if(binsJetType)
delete [] binsJetType;
521 if(binsTime)
delete [] binsTime;
522 if(binsVZERO)
delete [] binsVZERO;
534 partCont->ResetCurrentID();
540 if(track->
Pt()>=0.350) {
541 if (TMath::Abs(track->
Eta())<=0.9 && trkphi > 10 && trkphi < 250) {
558 for (
Int_t ic = 0; ic < nclusters; ic++) {
559 AliVCluster *cluster =
static_cast<AliVCluster*
>(clusCont->
GetCluster(ic));
561 AliDebug(2,Form(
"Could not receive cluster %d", ic));
564 if (!cluster->IsEMCAL()) {
565 AliDebug(2,Form(
"%s: Cluster is not emcal",GetName()));
570 cluster->GetMomentum(lp, const_cast<Double_t*>(
fVertex));
574 Double_t leadCellT = cluster->GetTOF();
584 for(
Int_t iCell=0; iCell<nCells; ++iCell) {
589 fGeom->GetGlobal(cellId, pos);
590 TLorentzVector lv(pos,cellE);
593 if(cellPhi<0.) cellPhi+=TMath::TwoPi();
594 if(cellPhi>TMath::TwoPi()) cellPhi-=TMath::TwoPi();
596 AliDebug(2,Form(
"cell energy = %f time = %f",cellE,cellT*1e9));
616 for (
Int_t ij = 0; ij < njets; ij++) {
623 if(jetPt>ptLeadJet1) ptLeadJet1=jetPt;
635 nJetsArr->AddAt(nJetsArr->At(iptbin)+1,iptbin);
656 AliVCluster *vc = 0x0;
660 vc =
static_cast<AliVCluster*
>(clusCont->
GetCluster(icc));
663 vc->GetMomentum(lp, const_cast<Double_t*>(
fVertex));
673 Int_t nJetsInEvent = nJetsArr->At(i);
684 for (
Int_t ij = 0; ij < njets; ij++) {
691 if(jetPt>ptLeadJet2) ptLeadJet2=jetPt;
706 nJetsArr->AddAt(nJetsArr->At(iptbin)+1,iptbin);
710 Int_t nJetsInEvent = nJetsArr->At(i);
722 Float_t VZEROAmp = InputEvent()->GetVZEROData()->GetTriggerChargeA() + InputEvent()->GetVZEROData()->GetTriggerChargeC();
758 return GetZ(trk->Px(),trk->Py(),trk->Pz(),jet->
Px(),jet->
Py(),jet->
Pz());
767 Double_t pJetSq = jetPx*jetPx+jetPy*jetPy+jetPz*jetPz;
769 return (trkPx*jetPx+trkPy*jetPy+trkPz*jetPz)/pJetSq;
771 AliWarning(Form(
"%s: strange, pjet*pjet seems to be zero pJetSq: %f",GetName(), pJetSq));
785 Int_t iCellAbsIdMax = -1;
786 Int_t nCells = clus->GetNCells();
787 for(
Int_t i = 0; i<nCells; i++) {
788 Int_t absId = clus->GetCellAbsId(i);
792 iCellAbsIdMax = absId;
795 return iCellAbsIdMax;
827 Int_t imod = -1, iphi =-1, ieta=-1,iTower = -1, iIphi = -1, iIeta = -1;
828 fGeom->GetCellIndex(absID,imod,iTower,iIphi,iIeta);
829 fGeom->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi, iIeta,iphi,ieta);
831 if( iphi < AliEMCALGeoParams::fgkEMCALRows-1)
832 absID1 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi+1, ieta);
834 absID2 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi-1, ieta);
836 if( ieta == AliEMCALGeoParams::fgkEMCALCols-1 && !(imod%2) ) {
837 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod+1, iphi, 0);
838 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
840 else if( ieta == 0 && imod%2 ) {
841 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
842 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod-1, iphi, AliEMCALGeoParams::fgkEMCALCols-1);
845 if( ieta < AliEMCALGeoParams::fgkEMCALCols-1 )
846 absID3 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta+1);
848 absID4 =
fGeom->GetAbsCellIdFromCellIndexes(imod, iphi, ieta-1);
856 ecross = ecell1+ecell2+ecell3+ecell4;
868 if( dphi<-1*TMath::Pi() )
869 dphi = dphi + 1*TMath::Pi();
870 if( dphi>1*TMath::Pi())
871 dphi = dphi - 1*TMath::Pi();
873 if( (dphi>0) && (dphi<1*TMath::Pi()/2) ){
875 }
else if( (dphi>1*TMath::Pi()/2) && (dphi<1*TMath::Pi()) ){
876 dphi = 1*TMath::Pi() - dphi;
877 }
else if( (dphi<0) && (dphi>-1*TMath::Pi()/2) ){
879 }
else if( (dphi<-1*TMath::Pi()/2) && (dphi>-1*TMath::Pi()) ){
880 dphi = dphi + 1*TMath::Pi();
Double_t GetTrackPhiOnEMCal() const
TH2F * fh2NJetsPtCharged
NJets per event vs pT,jet.
TH2F * fh2PtMeanPtConstituentsNeutral
pt, <pt> charged constituents
TH3F * fh3JetReacCent
cluster energy vs energy of leading cell in cluster vs time of the leading cell
TH3F * fh3EEtaPhiCluster
correlation between leading jet of the two branches
void Terminate(Option_t *option)
virtual AliVParticle * GetNextAcceptParticle()
TH3F * fh3PtEtaPhiTracks
rho vs. centrality
AliJetContainer * GetJetContainer(Int_t i=0) const
TH3F * fh3PtEtaPhiJetCharged
pt,eta,phi of full jets
virtual ~AliAnalysisTaskEmcalJetTriggerQA()
TH2F * fh2PtNConstituents
pt, # charged jet constituents
Int_t GetNJets(Int_t i=0) const
TH2F * fHistRhovsCentCharged
rho vs. centrality
TH2F * fh2NEFNConstituentsCharged
NEF, eta, phi.
TH3F * fh3PatchADCEnergyEtaPhiCenterJ2
patch ADC energy vs eta, phi at center of patch, high threshold
TH2F * fh2ECellVsCent
cell E, eta, phi
TH3F * fh3PatchADCEnergyEtaPhiCenterJ1
patch energy vs eta, phi at center of patch, low + high threshold
Double_t fEPV0
!event plane V0
TH3F * fh3PatchEnergyEtaPhiCenterJ1J2
patch energy vs eta, phi at center of patch, low threshold
TH3F * fh3PtEtaPhiTracksNoProp
pt,eta,phi of tracks at vertex
TH2F * fh2PtNEF
pt, <pt> neutral constituents
Double_t GetTrackPtOnEMCal() const
TriggerCategory fMainTrigCat
TH2F * fh2Ptz
NEF, # neutral jet constituents.
TH2F * fHistRhovsCentFull
histogram containing the triggerbit (fOfflineTriggerMask)
TH3F * fh3PtEtaAreaJetCharged
pt,eta,area of full jet
UShort_t GetNumberOfConstituents() const
Container for particles within the EMCAL framework.
Double_t GetEnergyLeadingCell(const AliVCluster *clus) const
UShort_t GetNumberOfTracks() const
TH3F * fh3PtEtaPhiTracksToProp
pt,eta,phi of tracks at Emcal surface
void UserCreateOutputObjects()
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Double_t GetZ(const AliVParticle *trk, const AliEmcalJet *jet) const
TH3F * fh3PtLeadJet1RawPatchEnergyVZEROAmp
leading jet energy vs leading patch energy vs VZERO amplitude
UShort_t GetNumberOfClusters() const
TH3F * fh3PtLeadJet2VsPatchEnergy
leading jet energy vs leading patch energy vs jet trigger (J1/J2)
TH2F * fh2CentPtJetCharged
cent, pt of full jets
AliEMCALGeometry * fGeom
!emcal geometry
TH2F * fh2PtzCharged
pt, z=pT,h,proj/p,jet full jet
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Int_t GetNClusters() const
TH2F * fh2PtNConstituentsCharged
pt,eta,area of charged jets
TH3F * fh3NEFEtaPhi
pt, NEF (neutral energy fraction)
Double_t fCent
!event centrality
TH3F * fh3PatchEnergyEtaPhiCenterJ2
patch energy vs eta, phi at center of patch, high threshold
TH3F * fh3EEtaPhiCell
patch ADC energy vs eta, phi at center of patch, all trigger patches
AliEmcalJet * GetAcceptJetFromArray(Int_t j, Int_t c=0) const
TH3F * fh3PatchADCEnergyEtaPhiCenterAll
patch ADC energy vs eta, phi at center of patch, low + high threshold
AliVCluster * GetCluster(Int_t i) const
TH3F * fh3PatchADCEnergyEtaPhiCenterJ1J2
patch ADC energy vs eta, phi at center of patch, low threshold
Double_t fMaxPatchADCEnergy
TH3F * fh3PtEtaPhiTracksProp
pt,eta,phi of tracks at vertex
Double_t GetECross(Int_t absID) const
TH3F * fh3PtEtaAreaJetFull
NJets per event vs pT,jet.
void FillTriggerPatchHistos()
AliVCaloCells * fCaloCells
!cells
TH2F * fh2PtMeanPtConstituentsCharged
pt, # jet constituents
TH3F * fh3PtLeadJet1VsPatchEnergy
cluster E, eta, phi
TH3F * fh3PtEtaPhiJetFull
cent, pt of charged jets
TH3F * fh3PtLeadJet1PatchEnergyVZEROAmp
leading jet energy vs leading patch energy vs jet trigger (J1/J2)
TH2F * fh2CellEnergyVsTime
cell E vs centrality
Double_t GetRhoVal(Int_t i=0) const
AliEmcalList * fOutput
!output list
TClonesArray * fTracks
!tracks
Short_t TrackAt(Int_t idx) const
Double_t fVertex[3]
!event vertex
void SetMakeGeneralHistograms(Bool_t g)
Float_t RelativeEP(Double_t objAng, Double_t EPAng) const
TH3F * fh3EClusELeadingCellVsTime
emcal cell energy vs time
TClonesArray * fTriggerPatchInfo
!trigger patch info array
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
TProfile * fhTriggerbit
Histo number of events.
TH3F * fh3PtEtaPhiTracksOnEmcal
pt,eta,phi of tracks at vertex
void UserCreateOutputObjects()
TH2F * fh2CentPtJetFull
pt,eta,phi of tracks at vertex
AliAnalysisTaskEmcalJetTriggerQA()
Double_t GetTrackEtaOnEMCal() const
TH3F * fh3PatchEnergyEtaPhiCenterJ1
leading jet energy vs online leading patch energy vs VZERO amplitude
Int_t GetLeadingCellId(const AliVCluster *clus) const
TH2F * fh2NEFNConstituentsNeutral
NEF, # charged jet constituents.
Container structure for EMCAL clusters.
TH2F * fh2PtLeadJet1VsLeadJet2
pt, z=pT,h,proj/p,jet charged jet
ClassImp(AliAnalysisTaskEmcalJetTriggerQA) AliAnalysisTaskEmcalJetTriggerQA
TH2F * fh2NJetsPtFull
pt,eta,phi of charged jets
AliEMCALTriggerPatchInfo * GetMainTriggerPatch(TriggerCategory triggersel=kTriggerLevel1Jet, Bool_t doOfflinSimple=kFALSE)