AliPhysics  ec7afe5 (ec7afe5)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskEMCALAlig.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-2017, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 #include <TClonesArray.h>
17 #include <TH1F.h>
18 #include <TH2F.h>
19 #include <TList.h>
20 #include <AliVCluster.h>
21 #include <AliVParticle.h>
22 #include <AliLog.h>
23 #include "AliParticleContainer.h"
24 #include "AliClusterContainer.h"
25 #include "AliPIDResponse.h"
27 #include "AliInputEventHandler.h"
28 #include "AliEMCALRecoUtils.h"
29 #include "AliEMCALGeometry.h"
30 #include "AliExternalTrackParam.h"
31 #include "TVector3.h"
32 
36 
39 fEMCALRecoUtils(NULL),
40 fEMCALGeo(NULL),
41 fPIDResponse(NULL),
42 fNPartPt(NULL),
43 fNPartPhi(NULL),
44 fNPartEta(NULL),
45 fPPartPt(NULL),
46 fPPartPhi(NULL),
47 fPPartEta(NULL),
48 fTPCnSgima(NULL),
49 fEOverP(NULL),
50 fElectronPhiRes(NULL),
51 fElectronEtaRes(NULL),
52 fElectronXRes(NULL),
53 fElectronYRes(NULL),
54 fElectronPositronZRes(NULL),
55 fPositronPhiRes(NULL),
56 fPositronEtaRes(NULL),
57 fPositronXRes(NULL),
58 fPositronYRes(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),
69 fPositronYResRU(NULL)
70 {
71 
72 }
73 
75 AliAnalysisTaskEmcal(name, kTRUE),
76 fEMCALRecoUtils(NULL),
77 fEMCALGeo(NULL),
78 fPIDResponse(NULL),
79 fNPartPt(NULL),
80 fNPartPhi(NULL),
81 fNPartEta(NULL),
82 fPPartPt(NULL),
83 fPPartPhi(NULL),
84 fPPartEta(NULL),
85 fTPCnSgima(NULL),
86 fEOverP(NULL),
87 fElectronPhiRes(NULL),
88 fElectronEtaRes(NULL),
89 fElectronXRes(NULL),
90 fElectronYRes(NULL),
91 fElectronPositronZRes(NULL),
92 fPositronPhiRes(NULL),
93 fPositronEtaRes(NULL),
94 fPositronXRes(NULL),
95 fPositronYRes(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)
107 
108 {
110 }
111 
112 
114 {
115 
116 }
117 
118 
120 {
122 
123  fPIDResponse = fInputHandler->GetPIDResponse();
124 
125  //Negative Particle Histograms;
126  fNPartPt = new TH1F("fNPartPt","p_{T} distribution of Electrons ;p_{T} (GeV/c);counts",200,0,20);
127  fOutput->Add(fNPartPt);
128  fNPartPhi = new TH1F("fNPartPhi","Electron #phi distribution;#phi;counts",100,0,6.3);
129  fOutput->Add(fNPartPhi);
130  fNPartEta = new TH1F("fNPartEta","Electron #eta distribution;#eta;counts",100,-1.0,1.0);
131  fOutput->Add(fNPartEta);
132 
133  //Positive Particle Histograms;
134  fPPartPt = new TH1F("fPPartPt","p_{T} distribution of Positrons;p_{T} (GeV/c);counts",200,0,20);
135  fOutput->Add(fPPartPt);
136  fPPartPhi = new TH1F("fPPartPhi","Positron #phi distribution;#phi;counts",100,0,6.3);
137  fOutput->Add(fPPartPhi);
138  fPPartEta = new TH1F("fPPartEta","Positron #eta distribution;#eta;counts",100,-1.0,1.0);
139  fOutput->Add(fPPartEta);
140 
141  //PID Plots
142  fTPCnSgima = new TH2F("fTPCnSgima","All Track TPC Nsigma distribution;p (GeV/c);#sigma_{TPC-dE/dx}",300,0,30,200,-20,20); // TPC Nsigma as function of pT
143  fOutput->Add(fTPCnSgima);
144 
145  fEOverP = new TH2F("fEOverP", "E/p distribution;p_{T} (GeV/c);E/p", 200,0,20,60, 0.0, 3.0); // E/p as function of pT
146  fOutput->Add(fEOverP);
147 
148 
149  fElectronPhiRes = new TH2F *[21];
150  fElectronEtaRes = new TH2F *[21];
151  fElectronXRes = new TH2F *[21];
152  fElectronYRes = new TH2F *[21];
153  fElectronPositronZRes = new TH2F *[21];
154  fPositronPhiRes = new TH2F *[21];
155  fPositronEtaRes = new TH2F *[21];
156  fPositronXRes = new TH2F *[21];
157  fPositronYRes = new TH2F *[21];
158  fAllMatchedTracksPhiRes = new TH2F *[21];
159  fAllMatchedTracksEtaRes = new TH2F *[21];
160 
161  fElectronPhiResRU = new TH2F *[21];
162  fElectronEtaResRU = new TH2F *[21];
163  fElectronXResRU = new TH2F *[21];
164  fElectronYResRU = new TH2F *[21];
165  fElectronPositronZResRU = new TH2F *[21];
166  fPositronPhiResRU = new TH2F *[21];
167  fPositronEtaResRU = new TH2F *[21];
168  fPositronXResRU = new TH2F *[21];
169  fPositronYResRU = new TH2F *[21];
170 
171 
172  for(Int_t i = 0; i<21;i++)
173  {
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);
175  fOutput->Add(fElectronPhiRes[i]);
176 
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);
178  fOutput->Add(fElectronEtaRes[i]);
179 
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);
181  fOutput->Add(fElectronXRes[i]);
182 
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);
184  fOutput->Add(fElectronYRes[i]);
185 
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);
188 
189  //Positrons
190 
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);
192  fOutput->Add(fPositronPhiRes[i]);
193 
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);
195  fOutput->Add(fPositronEtaRes[i]);
196 
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);
198  fOutput->Add(fPositronXRes[i]);
199 
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);
201  fOutput->Add(fPositronYRes[i]);
202 
203  //All tracks
204 
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);
207 
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);
210 
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);
212  fOutput->Add(fElectronPhiResRU[i]);
213 
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);
215  fOutput->Add(fElectronEtaResRU[i]);
216 
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);
218  fOutput->Add(fElectronXResRU[i]);
219 
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);
221  fOutput->Add(fElectronYResRU[i]);
222 
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);
225 
226  //Positrons
227 
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);
229  fOutput->Add(fPositronPhiResRU[i]);
230 
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);
232  fOutput->Add(fPositronEtaResRU[i]);
233 
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);
235  fOutput->Add(fPositronXResRU[i]);
236 
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);
238  fOutput->Add(fPositronYResRU[i]);
239 
240 
241  }
242 
243 
244 
245  PostData(1, fOutput);
246 }
247 
248 
250 {
251  DoTrackLoop();
252  return kTRUE;
253 }
254 
256 {
258  AliVCaloCells *cells = InputEvent()->GetEMCALCells();
259 
260  if (!clusCont)
261  {
262  AliError("No Cluster Container Available\n");
263  return;
264  }
265 
266  AliParticleContainer* partCont = 0;
267 
268  TIter next(&fParticleCollArray);
269 
270  while ((partCont = static_cast<AliParticleContainer*>(next()))) {
271 
272  UInt_t count = 0;
273 
274  for(auto part : partCont->accepted())
275  {
276  if (!part)
277  continue;
278  count++;
279 
280  const AliVTrack* track = static_cast<const AliVTrack*>(part);
281  if (!track)
282  continue;
283  //Electron PID cuts: -1 to 3 sigma TPC
284  Double_t TPCNSgima = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kElectron);
285  fTPCnSgima->Fill(track->Pt(),TPCNSgima);
286 
287  if (TPCNSgima < 1.0 || TPCNSgima > 3.0)
288  continue;
289 
290  if (clusCont)
291  {
292  Int_t iCluster = track->GetEMCALcluster();
293  if (iCluster >= 0)
294  {
295  AliVCluster* cluster = clusCont->GetAcceptCluster(iCluster);
296 
297  if (cluster)
298  {
299  Double_t EoverP = cluster->GetNonLinCorrEnergy()/track->P();
300  fEOverP->Fill(track->Pt(),EoverP);
301 
302  //E/p cut
303  if (EoverP>= 0.8 && EoverP<=1.2)
304  {
305  if (track->Pt() > 8)
306  {
307  //M20cut for high pT
308  Double_t M20 = cluster->GetM20();
309  if ( M20<0.01 && M20>0.4)
310  continue;
311  }
312 
313  //Cluster properties
314  Float_t emcx[3];
315  cluster->GetPosition(emcx);
316  TVector3 clustpos(emcx[0],emcx[1],emcx[2]);
317  Double_t emcphi = clustpos.Phi();
318  Double_t emceta = clustpos.Eta();
319 
320  if(emcphi < 0) emcphi = emcphi+(2*TMath::Pi());
321 
322  Int_t nCells=cluster->GetNCells();
323  Int_t iSupMod = -9;
324  Int_t ieta = -9;
325  Int_t iphi = -9;
326  Int_t icell = -9;
327  Bool_t Isshared = kFALSE;
328  //Get the SM number
329  fEMCALRecoUtils->GetMaxEnergyCell(fEMCALGeo,fCaloCells,cluster,icell,iSupMod,ieta,iphi,Isshared);
330  Int_t SMNumber = iSupMod;
331 
332  TVector3 trackposOnEMCAL;
333  trackposOnEMCAL.SetPtEtaPhi(440,track->GetTrackEtaOnEMCal(),track->GetTrackPhiOnEMCal());
334 
335  Float_t phidiff = TVector2::Phi_mpi_pi(trackposOnEMCAL.Phi()-emcphi);
336  Float_t etadiff = trackposOnEMCAL.Eta() - emceta;
337 
338  Float_t xdiff = trackposOnEMCAL.X() - clustpos.X();
339  Float_t ydiff = trackposOnEMCAL.Y() - clustpos.Y();
340  Float_t zdiff = trackposOnEMCAL.Z() - clustpos.Z();
341 
342 
343  //Save Default residuals (from propagation to the EMCal Surface)
344  if (track->Charge()> 0)
345  {
346  //Track properties
347  fPPartPt->Fill(track->Pt());
348  fPPartPhi->Fill(track->Phi());
349  fPPartEta->Fill(track->Eta());
350  //Residual from matching
351  fPositronEtaRes[SMNumber]->Fill(emcphi,etadiff);
352  fPositronPhiRes[SMNumber]->Fill(emcphi,phidiff);
353  fPositronXRes[SMNumber]->Fill(emcphi,xdiff);
354  fPositronYRes[SMNumber]->Fill(emcphi,ydiff);
355  fElectronPositronZRes[SMNumber]->Fill(emcphi,zdiff);
356  }
357  else
358  {
359  fNPartPt->Fill(track->Pt());
360  fNPartPhi->Fill(track->Phi());
361  fNPartEta->Fill(track->Eta());
362  fElectronEtaRes[SMNumber]->Fill(emcphi,etadiff);
363  fElectronPhiRes[SMNumber]->Fill(emcphi,phidiff);
364  fElectronXRes[SMNumber]->Fill(emcphi,xdiff);
365  fElectronYRes[SMNumber]->Fill(emcphi,ydiff);
366  fElectronPositronZRes[SMNumber]->Fill(emcphi,zdiff);
367 
368  }
369 
370  //propagation using electron mass
371 
372  Double_t xyz[3] = {0}, pxpypz[3] = {0}, cv[21] = {0};
373  track->PxPyPz(pxpypz);
374  track->XvYvZv(xyz);
375  track->GetCovarianceXYZPxPyPz(cv);
376  AliExternalTrackParam trackParam = AliExternalTrackParam(xyz,pxpypz,cv,track->Charge());
377 
378  Double_t trackPosExt[3] = {0.,0.,0.};
379  Double_t ElectronMass = 0.000510998910; //Electron mass in GeV
380  Float_t EtaResidualsForCrossCheck, PhiResidualsForCrossCheck;
381 
382  fEMCALRecoUtils->ExtrapolateTrackToPosition(&trackParam, emcx, ElectronMass, fEMCALRecoUtils->GetStep(), EtaResidualsForCrossCheck,PhiResidualsForCrossCheck);
383  trackParam.GetXYZ(trackPosExt);
384 
385  TVector3 trackposOnEMCALRU;
386 
387  trackposOnEMCALRU.SetXYZ(trackPosExt[0],trackPosExt[1],trackPosExt[2]);
388 
389  Double_t phidiffRU = TVector2::Phi_mpi_pi(trackposOnEMCALRU.Phi()-emcphi);
390  Double_t etadiffRU = trackposOnEMCALRU.Eta() - emceta;
391 
392  Double_t xdiffRU = trackposOnEMCALRU.X() - clustpos.X();
393  Double_t ydiffRU = trackposOnEMCALRU.Y() - clustpos.Y();
394  Double_t zdiffRU = trackposOnEMCALRU.Z() - clustpos.Z();
395 
396  if (track->Charge()>0)
397  {
398  fPositronEtaResRU[SMNumber]->Fill(emcphi,etadiffRU);
399  fPositronPhiResRU[SMNumber]->Fill(emcphi,phidiffRU);
400  fPositronXResRU[SMNumber]->Fill(emcphi,xdiffRU);
401  fPositronYResRU[SMNumber]->Fill(emcphi,ydiffRU);
402  fElectronPositronZResRU[SMNumber]->Fill(emcphi,zdiffRU);
403  }
404  else
405  {
406  fElectronEtaResRU[SMNumber]->Fill(emcphi,etadiffRU);
407  fElectronPhiResRU[SMNumber]->Fill(emcphi,phidiffRU);
408  fElectronXResRU[SMNumber]->Fill(emcphi,xdiffRU);
409  fElectronYResRU[SMNumber]->Fill(emcphi,ydiffRU);
410  fElectronPositronZResRU[SMNumber]->Fill(emcphi,zdiffRU);
411  }
412 
413  }
414  }
415  }
416 
417  }
418  }
419 
420  }
421 }
422 
424 {
426 
427  //EMCal utilits
428  fEMCALGeo = AliEMCALGeometry::GetInstance();
429  fEMCALRecoUtils = new AliEMCALRecoUtils();
430  fEMCALRecoUtils->InitParameters();
431 }
432 
434 {
435  return kTRUE;
436 }
437 
439 {
440 }
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.
double Double_t
Definition: External.C:58
TH2F ** fElectronXResRU
Electron matching residual in eta as function of EMCAL SuperModule using propagation to cluster (done...
Definition: External.C:236
AliPIDResponse * fPIDResponse
EMCAL geometry class.
Base task in the EMCAL framework.
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...
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.
TH2F ** fPositronYRes
Positron matching residual in x as function of EMCAL SuperModule using propagation to EMCAL surface...
int Int_t
Definition: External.C:63
unsigned int UInt_t
Definition: External.C:33
float Float_t
Definition: External.C:68
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
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.
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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
const char Option_t
Definition: External.C:48
AliEMCALGeometry * fEMCALGeo
EMCAL Reco utils used to recalculate the matching.
AliEMCALRecoUtils * fEMCALRecoUtils
void UserCreateOutputObjects()
Main initialization function on the worker.
bool Bool_t
Definition: External.C:53
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...
TH2F * fTPCnSgima
Positron pseudorapidity distribution.