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),
180 TString trigType1 =
"J1";
181 TString trigType2 =
"J2";
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);
247 fHistRhovsCentFull =
new TH2F(
"fHistRhovsCentFull",
"fHistRhovsCentFull", 101, -1, 100, 300, 0., 300.);
252 fHistRhovsCentCharged =
new TH2F(
"fHistRhovsCentCharged",
"fHistRhovsCentCharged", 101, -1, 100, 300, 0., 300.);
257 Int_t fgkNCentBins = 21;
258 Float_t kMinCent = 0.;
259 Float_t kMaxCent = 105.;
260 Double_t *binsCent =
new Double_t[fgkNCentBins+1];
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;
266 Float_t kMindEP = 0.;
267 Float_t kMaxdEP = 1.*TMath::Pi()/2.;
268 Double_t *binsdEP =
new Double_t[fgkNdEPBins+1];
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;
272 Float_t kMinPt = -50.;
273 Float_t kMaxPt = 150.;
274 Double_t *binsPt =
new Double_t[fgkNPtBins+1];
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;
278 Float_t kMinPhi = 0.;
279 Float_t kMaxPhi = 2.*TMath::Pi();
280 Double_t *binsPhi =
new Double_t[fgkNPhiBins+1];
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;
284 Float_t fgkEtaMin = -1.;
285 Float_t fgkEtaMax = 1.;
286 Double_t *binsEta=
new Double_t[fgkNEtaBins+1];
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;
290 Float_t kMinArea = 0.;
291 Float_t kMaxArea = 1.;
292 Double_t *binsArea =
new Double_t[fgkNAreaBins+1];
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;
296 Float_t kMinConst = 0.;
297 Float_t kMaxConst = 100.;
298 Double_t *binsConst =
new Double_t[fgkNConstBins+1];
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;
302 Float_t kMinMeanPt = 0.;
303 Float_t kMaxMeanPt = 20.;
304 Double_t *binsMeanPt =
new Double_t[fgkNMeanPtBins+1];
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;
308 Float_t kMinNEF = 0.;
309 Float_t kMaxNEF = 1.01;
310 Double_t *binsNEF =
new Double_t[fgkNNEFBins+1];
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;
315 Float_t kMaxz = 1.01;
316 Double_t *binsz =
new Double_t[fgkNzBins+1];
317 for(Int_t i=0; i<=fgkNzBins; i++) binsz[i]=(Double_t)kMinz + (kMaxz-kMinz)/fgkNzBins*(Double_t)i ;
319 Int_t fgkNJetTypeBins = 2;
320 Float_t kMinJetType = -0.5;
321 Float_t kMaxJetType = 1.5;
322 Double_t *binsJetType =
new Double_t[fgkNJetTypeBins+1];
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;
326 Float_t kMinTime = -200.;
327 Float_t kMaxTime = 200;
328 Double_t *binsTime =
new Double_t[fgkNTimeBins+1];
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;
332 Float_t kMinVZERO = 0.;
333 Float_t kMaxVZERO = 25000;
334 Double_t *binsVZERO =
new Double_t[fgkNVZEROBins+1];
335 for(Int_t i=0; i<=fgkNVZEROBins; i++) binsVZERO[i]=(Double_t)kMinVZERO + (kMaxVZERO-kMinVZERO)/fgkNVZEROBins*(Double_t)i ;
337 Double_t enBinEdges[3][2];
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.;
345 const Float_t enmin1 = 0;
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;
356 Double_t *binsEn=
new Double_t[fgkNEnBins+1];
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);
485 for (Int_t i=0; i<
fOutput->GetEntries(); ++i) {
486 TH1 *h1 =
dynamic_cast<TH1*
>(
fOutput->At(i));
491 TH2 *h2 =
dynamic_cast<TH2*
>(
fOutput->At(i));
496 TH3 *h3 =
dynamic_cast<TH3*
>(
fOutput->At(i));
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();
537 Double_t trkphi = track->
Phi()*TMath::RadToDeg();
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();
582 const Short_t nCells =
fCaloCells->GetNumberOfCells();
584 for(Int_t iCell=0; iCell<nCells; ++iCell) {
585 Short_t cellId =
fCaloCells->GetCellNumber(iCell);
586 Double_t cellE =
fCaloCells->GetCellAmplitude(cellId);
587 Double_t cellT =
fCaloCells->GetCellTime(cellId);
589 fGeom->GetGlobal(cellId, pos);
590 TLorentzVector lv(pos,cellE);
591 Double_t cellEta = lv.Eta();
592 Double_t cellPhi = lv.Phi();
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));
604 Double_t ptLeadJet1 = 0.;
605 Double_t ptLeadJet2 = 0.;
616 for (Int_t ij = 0; ij < njets; ij++) {
623 if(jetPt>ptLeadJet1) ptLeadJet1=jetPt;
634 for(Int_t iptbin = ptbin; iptbin<=
fh2NJetsPtFull->GetNbinsY(); iptbin++)
635 nJetsArr->AddAt(nJetsArr->At(iptbin)+1,iptbin);
645 Double_t sumPtCh = 0.;
656 AliVCluster *vc = 0x0;
657 Double_t sumPtNe = 0.;
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);
789 Double_t cellE =
fCaloCells->GetCellAmplitude(absId);
792 iCellAbsIdMax = absId;
795 return iCellAbsIdMax;
820 Double_t ecross = -1.;
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);
851 Double_t ecell1 =
fCaloCells->GetCellAmplitude(absID1);
852 Double_t ecell2 =
fCaloCells->GetCellAmplitude(absID2);
853 Double_t ecell3 =
fCaloCells->GetCellAmplitude(absID3);
854 Double_t ecell4 =
fCaloCells->GetCellAmplitude(absID4);
856 ecross = ecell1+ecell2+ecell3+ecell4;
865 Double_t dphi = EPAng - objAng;
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)