16 #include <TClonesArray.h>
20 #include <AliVCluster.h>
21 #include <AliVParticle.h>
25 #include "AliPIDResponse.h"
27 #include "AliInputEventHandler.h"
28 #include "AliEMCALRecoUtils.h"
29 #include "AliEMCALGeometry.h"
30 #include "AliExternalTrackParam.h"
39 fEMCALRecoUtils(NULL),
50 fElectronPhiRes(NULL),
51 fElectronEtaRes(NULL),
54 fElectronPositronZRes(NULL),
55 fPositronPhiRes(NULL),
56 fPositronEtaRes(NULL),
59 fAllMatchedTracksPhiRes(NULL),
60 fAllMatchedTracksEtaRes(NULL),
61 fElectronPhiResRU(NULL),
62 fElectronEtaResRU(NULL),
63 fElectronXResRU(NULL),
64 fElectronYResRU(NULL),
65 fElectronPositronZResRU(NULL),
66 fPositronPhiResRU(NULL),
67 fPositronEtaResRU(NULL),
68 fPositronXResRU(NULL),
76 fEMCALRecoUtils(NULL),
87 fElectronPhiRes(NULL),
88 fElectronEtaRes(NULL),
91 fElectronPositronZRes(NULL),
92 fPositronPhiRes(NULL),
93 fPositronEtaRes(NULL),
96 fAllMatchedTracksPhiRes(NULL),
97 fAllMatchedTracksEtaRes(NULL),
98 fElectronPhiResRU(NULL),
99 fElectronEtaResRU(NULL),
100 fElectronXResRU(NULL),
101 fElectronYResRU(NULL),
102 fElectronPositronZResRU(NULL),
103 fPositronPhiResRU(NULL),
104 fPositronEtaResRU(NULL),
105 fPositronXResRU(NULL),
106 fPositronYResRU(NULL)
126 fNPartPt =
new TH1F(
"fNPartPt",
"p_{T} distribution of Electrons ;p_{T} (GeV/c);counts",200,0,20);
128 fNPartPhi =
new TH1F(
"fNPartPhi",
"Electron #phi distribution;#phi;counts",100,0,6.3);
130 fNPartEta =
new TH1F(
"fNPartEta",
"Electron #eta distribution;#eta;counts",100,-1.0,1.0);
134 fPPartPt =
new TH1F(
"fPPartPt",
"p_{T} distribution of Positrons;p_{T} (GeV/c);counts",200,0,20);
136 fPPartPhi =
new TH1F(
"fPPartPhi",
"Positron #phi distribution;#phi;counts",100,0,6.3);
138 fPPartEta =
new TH1F(
"fPPartEta",
"Positron #eta distribution;#eta;counts",100,-1.0,1.0);
142 fTPCnSgima =
new TH2F(
"fTPCnSgima",
"All Track TPC Nsigma distribution;p (GeV/c);#sigma_{TPC-dE/dx}",300,0,30,200,-20,20);
145 fEOverP =
new TH2F(
"fEOverP",
"E/p distribution;p_{T} (GeV/c);E/p", 200,0,20,60, 0.0, 3.0);
172 for(
Int_t i = 0; i<21;i++)
174 fElectronPhiRes[i] =
new TH2F(Form(
"fElectronPhiRes%d",i),
"Distance (phi) of EMCAL cluster in ID electrons;#phi;#Delta#phi",100,0,2*TMath::Pi(),1000,-0.3,0.3);
177 fElectronEtaRes[i] =
new TH2F(Form(
"fElectronEtaRes%d",i),
"Distance (eta) of EMCAL clusterin ID electrons;#phi;#Delta#eta",100,0,2*TMath::Pi(),1000,-0.3,0.3);
180 fElectronXRes[i] =
new TH2F(Form(
"fElectronXRes%d",i),
"Distance (x) of EMCAL cluster in ID electrons;#phi;#Delta x",100,0,2*TMath::Pi(),1000,-20,20);
183 fElectronYRes[i] =
new TH2F(Form(
"fElectronYRes%d",i),
"Distance (y) of EMCAL clusterin ID electrons;#phi;#Delta y",100,0,2*TMath::Pi(),1000,-20,20);
186 fElectronPositronZRes[i] =
new TH2F(Form(
"fElectronPositronZRes%d",i),
"Distance (z) of EMCAL clusterin ID electrons and positrons;#phi;#Delta z",100,0,2*TMath::Pi(),1000,-20,20);
191 fPositronPhiRes[i] =
new TH2F(Form(
"fPositronPhiRes%d",i),
"Distance (phi) of EMCAL cluster in ID positrons;#Delta#phi;#Delta#phi",100,0,2*TMath::Pi(),1000,-0.3,0.3);
194 fPositronEtaRes[i] =
new TH2F(Form(
"fPositronEtaRes%d",i),
"Distance (eta) of EMCAL clusterin ID positrons;#phi;#Delta#eta",100,0,2*TMath::Pi(),1000,-0.3,0.3);
197 fPositronXRes[i] =
new TH2F(Form(
"fPositronXRes%d",i),
"Distance (x) of EMCAL cluster in ID positrons;#phi;#Delta x",100,0,2*TMath::Pi(),1000,-20,20);
200 fPositronYRes[i] =
new TH2F(Form(
"fPositronYRes%d",i),
"Distance (y) of EMCAL clusterin ID positrons;#phi;#Delta y",100,0,2*TMath::Pi(),1000,-20,20);
205 fAllMatchedTracksPhiRes[i] =
new TH2F(Form(
"fAllMatchedTracksPhiRes%d",i),
"Distance (phi) of EMCAL cluster in all matched tracks ;#Delta#phi;#Delta#eta",100,0,2*TMath::Pi(),100,-0.3,0.3);
208 fAllMatchedTracksEtaRes[i] =
new TH2F(Form(
"fAllMatchedTracksEtaRes%d",i),
"Distance (phi) of EMCAL cluster in all matched tracks ;#Delta#phi;#Delta#eta",100,0,2*TMath::Pi(),100,-0.3,0.3);
211 fElectronPhiResRU[i] =
new TH2F(Form(
"fElectronPhiResRU%d",i),
"Distance (phi) of EMCAL cluster in ID electrons RU;#phi;#Delta#phi",100,0,2*TMath::Pi(),1000,-0.3,0.3);
214 fElectronEtaResRU[i] =
new TH2F(Form(
"fElectronEtaResRU%d",i),
"Distance (eta) of EMCAL clusterin ID electrons RU;#phi;#Delta#eta",100,0,2*TMath::Pi(),1000,-0.3,0.3);
217 fElectronXResRU[i] =
new TH2F(Form(
"fElectronXResRU%d",i),
"Distance (x) of EMCAL cluster in ID electrons RU;#phi;#Delta x",100,0,2*TMath::Pi(),1000,-20,20);
220 fElectronYResRU[i] =
new TH2F(Form(
"fElectronYResRU%d",i),
"Distance (y) of EMCAL clusterin ID electrons RU;#phi;#Delta y",100,0,2*TMath::Pi(),1000,-20,20);
223 fElectronPositronZResRU[i] =
new TH2F(Form(
"fElectronPositronZRes%dRU",i),
"Distance (z) of EMCAL clusterin ID electrons and positrons RU;#phi;#Delta z",100,0,2*TMath::Pi(),1000,-20,20);
228 fPositronPhiResRU[i] =
new TH2F(Form(
"fPositronPhiResRU%d",i),
"Distance (phi) of EMCAL cluster in ID positrons RU;#Delta#phi;#Delta#eta",100,0,2*TMath::Pi(),1000,-0.3,0.3);
231 fPositronEtaResRU[i] =
new TH2F(Form(
"fPositronEtaResRU%d",i),
"Distance (eta) of EMCAL clusterin ID positrons RU;#phi;#Delta#eta",100,0,2*TMath::Pi(),1000,-0.3,0.3);
234 fPositronXResRU[i] =
new TH2F(Form(
"fPositronXResRU%d",i),
"Distance (x) of EMCAL cluster in ID positrons RU;#phi;#Delta x",100,0,2*TMath::Pi(),1000,-20,20);
237 fPositronYResRU[i] =
new TH2F(Form(
"fPositronYResRU%d",i),
"Distance (y) of EMCAL clusterin ID positrons RU;#phi;#Delta y",100,0,2*TMath::Pi(),1000,-20,20);
262 AliError(
"No Cluster Container Available\n");
270 while ((partCont = static_cast<AliParticleContainer*>(next()))) {
274 for(
auto part : partCont->
accepted())
280 const AliVTrack* track =
static_cast<const AliVTrack*
>(part);
287 if (TPCNSgima < 1.0 || TPCNSgima > 3.0)
292 Int_t iCluster = track->GetEMCALcluster();
299 Double_t EoverP = cluster->GetNonLinCorrEnergy()/track->P();
300 fEOverP->Fill(track->Pt(),EoverP);
303 if (EoverP>= 0.8 && EoverP<=1.2)
309 if ( M20<0.01 && M20>0.4)
315 cluster->GetPosition(emcx);
316 TVector3 clustpos(emcx[0],emcx[1],emcx[2]);
320 if(emcphi < 0) emcphi = emcphi+(2*TMath::Pi());
330 Int_t SMNumber = iSupMod;
332 TVector3 trackposOnEMCAL;
333 trackposOnEMCAL.SetPtEtaPhi(440,track->GetTrackEtaOnEMCal(),track->GetTrackPhiOnEMCal());
335 Float_t phidiff = TVector2::Phi_mpi_pi(trackposOnEMCAL.Phi()-emcphi);
336 Float_t etadiff = trackposOnEMCAL.Eta() - emceta;
338 Float_t xdiff = trackposOnEMCAL.X() - clustpos.X();
339 Float_t ydiff = trackposOnEMCAL.Y() - clustpos.Y();
340 Float_t zdiff = trackposOnEMCAL.Z() - clustpos.Z();
344 if (track->Charge()> 0)
372 Double_t xyz[3] = {0}, pxpypz[3] = {0}, cv[21] = {0};
373 track->PxPyPz(pxpypz);
375 track->GetCovarianceXYZPxPyPz(cv);
376 AliExternalTrackParam trackParam = AliExternalTrackParam(xyz,pxpypz,cv,track->Charge());
378 Double_t trackPosExt[3] = {0.,0.,0.};
379 Double_t ElectronMass = 0.000510998910;
380 Float_t EtaResidualsForCrossCheck, PhiResidualsForCrossCheck;
382 fEMCALRecoUtils->ExtrapolateTrackToPosition(&trackParam, emcx, ElectronMass,
fEMCALRecoUtils->GetStep(), EtaResidualsForCrossCheck,PhiResidualsForCrossCheck);
383 trackParam.GetXYZ(trackPosExt);
385 TVector3 trackposOnEMCALRU;
387 trackposOnEMCALRU.SetXYZ(trackPosExt[0],trackPosExt[1],trackPosExt[2]);
389 Double_t phidiffRU = TVector2::Phi_mpi_pi(trackposOnEMCALRU.Phi()-emcphi);
390 Double_t etadiffRU = trackposOnEMCALRU.Eta() - emceta;
392 Double_t xdiffRU = trackposOnEMCALRU.X() - clustpos.X();
393 Double_t ydiffRU = trackposOnEMCALRU.Y() - clustpos.Y();
394 Double_t zdiffRU = trackposOnEMCALRU.Z() - clustpos.Z();
396 if (track->Charge()>0)
428 fEMCALGeo = AliEMCALGeometry::GetInstance();
TH2F ** fElectronPositronZRes
Electron matching residual in y as function of EMCAL SuperModule using propagation to EMCAL surface...
TH2F ** fElectronYResRU
Electron matching residual in x as function of EMCAL SuperModule using propagation to cluster (done b...
TH1F * fNPartEta
Electron azimuthal angle distribution.
TH2F ** fElectronXResRU
Electron matching residual in eta as function of EMCAL SuperModule using propagation to cluster (done...
AliPIDResponse * fPIDResponse
EMCAL geometry class.
Base task in the EMCAL framework.
void Terminate(Option_t *option)
TH2F ** fAllMatchedTracksPhiRes
Positron matching residual in y as function of EMCAL SuperModule using propagation to EMCAL surface...
TH2F ** fPositronPhiRes
Electron and positron matching residual in z as function of EMCAL SuperModule using propagation to EM...
TH2F ** fElectronYRes
Electron matching residual in x as function of EMCAL SuperModule using propagation to EMCAL surface...
TH2F ** fPositronPhiResRU
Electron and positron matching residual in z as function of EMCAL SuperModule using propagation to cl...
AliAnalysisTaskEMCALAlig()
TH2F ** fPositronYResRU
Positron matching residual in x as function of EMCAL SuperModule using propagation to cluster (done b...
Container for particles within the EMCAL framework.
TH1F * fPPartPt
Electron pseudorapidity distribution.
TObjArray fParticleCollArray
particle/track collection array
TH1F * fPPartPhi
Positron transverse momemtum distribution.
void ExecOnce()
Perform steps needed to initialize the analysis.
TH2F ** fElectronPhiRes
E/p as function of pT.
void UserCreateOutputObjects()
TH2F ** fPositronYRes
Positron matching residual in x as function of EMCAL SuperModule using propagation to EMCAL surface...
TH1F * fNPartPt
PID response task used to perform electron identification.
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
TH2F ** fAllMatchedTracksEtaRes
All tracks mathing residual in Phi.
AliVCluster * GetAcceptCluster(Int_t i) const
TH2F ** fPositronXResRU
Positron matching residual in eta as function of EMCAL SuperModule using propagation to cluster (done...
AliVCaloCells * fCaloCells
!cells
ClassImp(AliAnalysisTaskDeltaPt) AliAnalysisTaskDeltaPt
TH2F ** fElectronXRes
Electron matching residual in eta as function of EMCAL SuperModule using propagation to EMCAL surface...
AliEmcalList * fOutput
!output list
TH2F * fEOverP
TPC Nsigma as function of pT.
TH1F * fPPartEta
Positron azimuthal angle distribution.
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
TH2F ** fElectronPhiResRU
All tracks mathing residual in Eta.
TH1F * fNPartPhi
Electron transverse momemtum distribution.
TH2F ** fElectronEtaResRU
Electron matching residual in phi as function of EMCAL SuperModule using propagation to cluster (done...
TH2F ** fPositronXRes
Positron matching residual in eta as function of EMCAL SuperModule using propagation to EMCAL surface...
Bool_t FillHistograms()
Function filling histograms.
void SetMakeGeneralHistograms(Bool_t g)
virtual void ExecOnce()
Perform steps needed to initialize the analysis.
TH2F ** fElectronEtaRes
Electron matching residual in phi as function of EMCAL SuperModule using propagation to EMCAL surface...
const AliParticleIterableContainer accepted() const
AliEMCALGeometry * fEMCALGeo
EMCAL Reco utils used to recalculate the matching.
AliEMCALRecoUtils * fEMCALRecoUtils
void UserCreateOutputObjects()
Main initialization function on the worker.
TH2F ** fPositronEtaRes
Positron matching residual in phi as function of EMCAL SuperModule using propagation to EMCAL surface...
TH2F ** fPositronEtaResRU
Positron matching residual in phi as function of EMCAL SuperModule using propagation to cluster (done...
Container structure for EMCAL clusters.
TH2F ** fElectronPositronZResRU
Electron matching residual in y as function of EMCAL SuperModule using propagation to cluster (done b...
virtual ~AliAnalysisTaskEMCALAlig()
TH2F * fTPCnSgima
Positron pseudorapidity distribution.