AliRoot Core  edcc906 (edcc906)
TestAOD.C
Go to the documentation of this file.
1 
17 #if !defined(__CINT__) || defined(__MAKECINT__)
18 
19 //Root include files
20 #include <Riostream.h>
21 #include <TFile.h>
22 //#include <TSystem.h>
23 #include <TH1F.h>
24 #include <TParticle.h>
25 #include <TRefArray.h>
26 
27 //AliRoot include files
28 #include "AliRunLoader.h"
29 #include "AliStack.h"
30 #include "AliAODEvent.h"
31 #include "AliAODVertex.h"
32 #include "AliAODCaloCluster.h"
33 #include "AliAODCaloCells.h"
34 #include "AliAODCaloTrigger.h"
35 #include "AliAODTrack.h"
36 #include "AliPID.h"
37 #include "AliEMCALGeometry.h"
38 #include "AliAODMCParticle.h"
39 
40 #endif
41 
42 // Change the bool depending on what information you want to print
43 // when all FALSE, prints minimum cluster information.
44 Bool_t kPrintKine = kFALSE;
45 Bool_t kPrintCaloCells = kFALSE;
46 Bool_t kPrintCaloTrigger = kFALSE;
47 Bool_t kPrintTrackMatches = kFALSE;
48 Bool_t kPrintCaloCluster = kTRUE ;
49 Bool_t kPrintClusterCells = kFALSE;
50 Bool_t kPrintClusterPID = kFALSE;
51 
55 void TestAOD()
56 {
57  // Init some example histograms
58  // AOD
59  TH1F * hEta = (TH1F*) new TH1F("hEta","reco #eta",1000, -0.71,0.71);
60  TH1F * hPhi = (TH1F*) new TH1F("hPhi","reco #phi",360, 0,360);
61  TH1F * hE = (TH1F*) new TH1F("hE" ,"reco e",300, 0,30);
62  TH1F * hTime = (TH1F*) new TH1F("hTime" ,"reco time",1000, 0,1000);
63  hEta ->SetXTitle("#eta");
64  hPhi ->SetXTitle("#phi (deg)");
65  hE ->SetXTitle("E (GeV)");
66  hTime->SetXTitle("time (ns)");
67 
68  // Monte Carlo
69  TH1F * hMCEta = (TH1F*) new TH1F("hMCEta","MC #eta",1000, -0.71,0.71);
70  TH1F * hMCPhi = (TH1F*) new TH1F("hMCPhi","MC #phi",360, 0,360);
71  TH1F * hMCE = (TH1F*) new TH1F("hMCE" ,"MC e",300, 0,30);
72  hMCEta->SetXTitle("#eta");
73  hMCPhi->SetXTitle("#phi (deg)");
74  hMCE ->SetXTitle("E (GeV)");
75 
76  // AOD - MonteCarlo
77  TH1F * hMCDEta = (TH1F*) new TH1F("hMCDEta"," #eta cluster - #eta MC",500, -0.05,0.05);
78  TH1F * hMCDPhi = (TH1F*) new TH1F("hMCDPhi"," #phi cluster - #phi MC",500, -0.05,0.05);
79  TH1F * hMCDE = (TH1F*) new TH1F("hMCDE" ,"e cluster - e MC",200, -10,10);
80  hMCDEta->SetXTitle("#eta_{reco}-#eta_{MC}");
81  hMCDPhi->SetXTitle("#phi_{reco}-#phi_{MC} (rad)");
82  hMCDE ->SetXTitle("E_{reco}-E_{MC} (GeV)");
83 
84  // AOD - Track-matching
85  TH1F * hTMDEta = (TH1F*) new TH1F("hTMDEta"," #eta cluster - eta track",500, -0.05,0.05);
86  TH1F * hTMDPhi = (TH1F*) new TH1F("hTMDPhi"," #phi cluster - phi track",500, -0.05,0.05);
87  //TH1F * hTMDEtaOut= (TH1F*) new TH1F("hTMDEtaOut"," #eta cluster - eta track-outer",500, -0.05,0.05);
88  //TH1F * hTMDPhiOut= (TH1F*) new TH1F("hTMDPhiOut"," #phi cluster - phi track-outer",500, -0.05,0.05);
89  TH1F * hTMResEta = (TH1F*) new TH1F("hTMResEta"," Residual #eta cluster - eta track",500, -0.05,0.05);
90  TH1F * hTMResPhi = (TH1F*) new TH1F("hTMResPhi"," Residual #phi cluster - phi track",500, -0.05,0.05);
91  hTMDEta ->SetXTitle("#eta_{cluster}-#eta_{track}");
92  hTMDPhi ->SetXTitle("#phi_{cluster}-#phi_{track} (rad)");
93  //hTMDEtaOut->SetXTitle("#eta_{cluster}-#eta_{track-out}");
94  //hTMDPhiOut->SetXTitle("#phi_{cluster}-#phi_{track-out} (rad)");
95 
96  TH1F * hTMEOverP = (TH1F*) new TH1F("hTMEOverP"," E_{cluster}/ p_{Track}",100,0,2);
97  //TH1F * hTMEOverPOut = (TH1F*) new TH1F("hTMEOverPOut"," E_{cluster}/ p_{Track-out}",100,0,2);
98  hTMEOverP ->SetXTitle("E_{cluster}/ p_{Track}");
99  //hTMEOverPOut ->SetXTitle("E_{cluster}/ p_{Track-out}");
100 
101  // L1 trigger
102  TH2I * hEGAPatch = new TH2I("hEGAPatch","EGA trigger",51,-0.5,50.5,65,-0.5,64.5);
103  TH2I * hEJEPatch = new TH2I("hEJEPatch","EJE trigger",51,-0.5,50.5,65,-0.5,64.5);
104  hEGAPatch->SetXTitle("column (#eta direction)");
105  hEGAPatch->SetYTitle("row (#phi direction)");
106  hEJEPatch->SetXTitle("column (#eta direction)");
107  hEJEPatch->SetYTitle("row (#phi direction)");
108 
109  // Open the AOD file, get the tree with events
110  TFile* f = new TFile("AliAOD.root");
111  TTree* aodTree = (TTree*)f->Get("aodTree");
112 
113  AliAODEvent* aod = new AliAODEvent();
114  aod->ReadFromTree(aodTree);
115 
116  // Init geometry and array that will contain the clusters, Run2
117  AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1_DCAL_8SM") ;
118 
119  // Run1:
120  //AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETE12SMV1") ;
121  //AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1") ;
122  //AliEMCALGeometry *geom = AliEMCALGeometry::GetInstance("EMCAL_FIRSTYEARV1") ;
123 
124  // Loop of events
125 
126  Float_t pos[3];
127 
128  TRefArray* caloClusters = new TRefArray();
129 
130  Int_t nEvt = aodTree->GetEntries();
131 
132  for(Int_t iev = 0; iev < nEvt; iev++)
133  {
134  cout << "<<<< Event: " << iev+1 << "/" << nEvt << " >>>>";
135  cout <<" Triggers: "<< aod->GetFiredTriggerClasses();
136  cout<<endl;
137 
138  aodTree->GetEvent(iev);
139 
140  // Get reconstructed vertex position, only used if
141  // the momentum of the cluster is calculated, see comment below
142  //
143  //Double_t vertex_position[3];
144  //aod->GetPrimaryVertex()->GetXYZ(vertex_position);
145 
146  //------------------------------------------------------
147  // Get Cells Array, all cells in event, print cells info
148  //------------------------------------------------------
149  AliVCaloCells &cells = *(aod->GetEMCALCells());
150 
151  if(kPrintCaloCells)
152  {
153  Int_t nTotalCells = cells.GetNumberOfCells() ;
154  //Int_t type = cells.GetType();
155  for (Int_t icell= 0; icell < nTotalCells; icell++)
156  {
157  cout<<"Cell : " <<icell<<"/"<<nTotalCells <<" - ID: "<<cells.GetCellNumber(icell)<<"; High Gain? "<<cells.GetHighGain(icell);
158  cout<<"; Amplitude: "<<cells.GetAmplitude(icell)<<"; Time: "<<cells.GetTime(icell)*1e9;
159  cout<<"; MC label " <<cells.GetMCLabel(icell) <<"; Embeded E fraction "<<cells.GetEFraction(icell);
160  cout<<endl;
161  }// cell loop
162  }
163 
164  //------------------------------------------------------
165  // Calo Trigger, L1
166  //------------------------------------------------------
167 
169  {
170  // Bits to know what L1 trigger,
171  Int_t bitEGA = 6; // 4 for old data
172  Int_t bitEJE = 8; // 5 for old data
173 
174  AliAODCaloTrigger& trg = *(aod->GetCaloTrigger("EMCAL"));
175  trg.Reset();
176  while (trg.Next())
177  {
178  Int_t col, row;
179  trg.GetPosition(col, row);
180 
181  if (col > -1 && row > -1)
182  {
183  Int_t bit = 0;
184  trg.GetTriggerBits(bit);
185 
186  Int_t ts = 0;
187  trg.GetL1TimeSum(ts);
188 
189  // Check if it is EGA or EJE (it does not work??)
190  Bool_t isEGA1 = ((bit>> bitEGA ) & 0x1);
191  Bool_t isEGA2 = ((bit>> (bitEGA+1)) & 0x1);
192  Bool_t isEJE1 = ((bit>> bitEJE ) & 0x1);
193  Bool_t isEJE2 = ((bit>> (bitEJE+1)) & 0x1);
194 
195  if ( ts >= 0 )
196  {
197  printf("Bit %d (G1 %d,G2 %d,J1 %d,J2 %d), cell in patch position (ieta,iphi)=(%d,%d), L1 amplitude %d\n ",
198  bit, isEGA1, isEGA2, isEJE1, isEJE2, col, row, ts);
199  if(bit>10) hEJEPatch->Fill(col,row);
200  else hEGAPatch->Fill(col,row);
201  }
202  }
203  }
204  }
205 
206  //------------------------------------------------------
207  // Calo Clusters
208  //------------------------------------------------------
209 
210  // Get CaloClusters Array
211  aod->GetEMCALClusters(caloClusters);
212 
213  // Loop over clusters
214  Int_t nclus = caloClusters->GetEntries();
215  for (Int_t icl = 0; icl < nclus; icl++)
216  {
217  AliVCluster* clus = (AliVCluster*)caloClusters->At(icl);
218  Float_t energy = clus->E();
219  clus->GetPosition(pos);
220  TVector3 vpos(pos[0],pos[1],pos[2]);
221 
222  // We can get a momentum TLorentzVector per cluster,
223  // corrected by the vertex position, see above
224  //
225  //TLorentzVector p;
226  //clus->GetMomentum(p,vertex_position);
227 
228  Double_t cphi = vpos.Phi();
229  if(cphi < 0) cphi +=TMath::TwoPi();
230  Double_t ceta = vpos.Eta();
231 
232  Int_t nMatched = clus->GetNTracksMatched();
233  //Int_t trackIndex = clus->GetTrackMatchedIndex(); // Not set on AODs only on ESDs
234  Int_t nLabels = clus->GetNLabels();
235  Int_t labelIndex = clus->GetLabel();
236  Int_t nCells = clus->GetNCells();
237  Int_t nlm = clus->GetNExMax() ;
238 
239  // Fill some histograms
240  hEta ->Fill(ceta);
241  hPhi ->Fill(cphi*TMath::RadToDeg());
242  hE ->Fill(energy);
243  hTime->Fill(clus->GetTOF()*1e9);
244 
245  // Print basic cluster information
246  if ( kPrintCaloCluster )
247  {
248  cout << "Cluster: " << icl+1 << "/" << nclus << " Energy: " << energy << "; Phi: "
249  << cphi*TMath::RadToDeg() << "; Eta: " << ceta
250  << "; NCells: " << nCells << "; NLM: " << nlm
251  << "; #Labels: " << nLabels << " Index: " << labelIndex
252  << "; Time "<<clus->GetTOF()*1e9<<" ns "<<endl;
253  }
254 
255  if ( nMatched > 0 )
256  {
257  if ( kPrintCaloCluster )
258  printf("\t N matches %d, Residual phi %2.4f, eta %2.4f\n",
259  nMatched,clus->GetTrackDx(),clus->GetTrackDz());
260  hTMResEta->Fill(clus->GetTrackDz());
261  hTMResPhi->Fill(clus->GetTrackDx());
262  }
263 
264  // Print primary info
265  // Careful, different from ESDs.
266  if(kPrintKine)
267  {
268  TClonesArray * arr = dynamic_cast<TClonesArray*>(aod->FindListObject("mcparticles")) ;
269  if(!arr) continue ;
270 
271  if(labelIndex >= 0 && labelIndex < arr->GetEntriesFast())
272  {
273  AliAODMCParticle * particle = (AliAODMCParticle*) arr->At(labelIndex);
274 
275  // Fill histograms with primary info
276  hMCEta ->Fill(particle->Eta());
277  hMCPhi ->Fill(particle->Phi()*TMath::RadToDeg());
278  hMCE ->Fill(particle->E());
279  hMCDEta ->Fill(ceta-particle->Eta());
280  hMCDPhi ->Fill(cphi-particle->Phi());
281  hMCDE ->Fill(energy-particle->E());
282 
283  // Print primary values
284  cout<<" MC More contributing primary: "<<particle->GetName()<<"; with kinematics: "<<endl;
285  cout<<" \t Energy: "<<particle->E()<<"; Phi: "<<particle->Phi()*TMath::RadToDeg()<<"; Eta: "<<particle->Eta()<<endl;
286  cout<<" \t dE: "<<energy-particle->E()<<"; dPhi: "<<(cphi-particle->Phi())*TMath::RadToDeg()<<"; dEta: "<<ceta-particle->Eta()<<endl;
287  cout<<" \t deposited energy fraction = "<<clus->GetClusterMCEdepFraction(0)<<endl;
288 
289  for(Int_t i = 1; i < nLabels; i++)
290  {
291  //particle = stack->Particle((((AliAODCaloCluster*)clus)->GetLabelsArray())->At(i));
292  particle = (AliAODMCParticle*)arr->At((clus->GetLabels())[i]);
293  //or Int_t *labels = clus->GetLabels();
294  //particle = stack->Particle(labels[i]);
295  if(!particle)
296  {
297  printf("\t \t MC particle not found!!!\n");
298  continue;
299  }
300 
301  printf("\t \t Other contributing primary: %s; Energy %2.2f; deposited E_frac %2.2f \n",
302  particle->GetName(),particle->E(),clus->GetClusterMCEdepFraction(i));
303  }
304  }
305  else if( labelIndex >= arr->GetEntriesFast())
306  cout <<"PROBLEM, label is too large : "<<labelIndex<<" >= particles in stack "<< arr->GetEntriesFast() <<endl;
307  else
308  cout<<"Negative label!!! : "<<labelIndex<<endl;
309  } // play with stack
310 
311  // Matching results
312  // Careful, different from ESDs
313  if(kPrintTrackMatches && nMatched > 0)
314  {
316 
317  if(track)
318  {
319  Double_t tphi = track->Phi();
320  Double_t teta = track->Eta();
321  Double_t tmom = track->P();
322 
323  Double_t deta = teta - ceta;
324  Double_t dphi = tphi - cphi;
325 
326  if(dphi > TMath::Pi()) dphi -= 2*TMath::Pi();
327  if(dphi < -TMath::Pi()) dphi += 2*TMath::Pi();
328 
329  Double_t dR = sqrt(dphi*dphi + deta*deta);
330 
331  Double_t pOverE = tmom/energy;
332 
333  cout << "\t Track Momentum : " << tmom << " phi: " << tphi << " eta: " << teta << endl;
334 
335  hTMEOverP->Fill(pOverE);
336  hTMDEta ->Fill(deta);
337  hTMDPhi ->Fill(dphi);
338 
339  // Check equivalent for AODs.
340 // if(track->GetOuterParam())
341 // {
342 // tphi = track->GetOuterParam()->Phi();
343 // teta = track->GetOuterParam()->Eta();
344 // tmom = track->GetOuterParam()->P();
345 //
346 // cout << "\t Track Momentum - Outer: " << tmom << " phi: " << tphi << " eta: " << teta << endl;
347 //
348 // deta = teta - ceta;
349 // dphi = tphi - cphi;
350 //
351 // if(dphi > TMath::Pi()) dphi -= 2*TMath::Pi();
352 // if(dphi < -TMath::Pi()) dphi += 2*TMath::Pi();
353 //
354 // dR = sqrt(dphi*dphi + deta*deta);
355 //
356 // pOverE = tmom/energy;
357 //
358 // if(dR < 0.02 && pOverE < 1.8 && nCells > 1)
359 // {
360 // cout << "\t Excellent MATCH! dR = " << dR << " p/E = " << pOverE << "Residuals phi "<< dphi*TMath::RadToDeg()<< " eta "<< deta << endl;
361 // }
362 //
363 // hTMEOverPOut->Fill(pOverE);
364 // hTMDEtaOut->Fill(deta);
365 // hTMDPhiOut->Fill(dphi);
366 // }
367 // else printf("!!! NO OUTER PARAM !!!\n");
368  }
369  else printf("!!! NO TRACK !!!\n");
370  }// matching
371 
372  // Get PID weights and print them
373  if(kPrintClusterPID)
374  {
375  const Double_t *pid = clus->GetPID();
376  printf("PID weights: ph %0.2f, pi0 %0.2f, el %0.2f, conv el %0.2f, hadrons: pion %0.2f, kaon %0.2f, proton %0.2f , neutron %0.2f, kaon %0.2f \n",
381  } // PID
382 
383  // Get CaloCells of cluster and print their info, position.
385  {
386  UShort_t * index = clus->GetCellsAbsId() ;
387  Double_t * fraction = clus->GetCellsAmplitudeFraction() ;
388  Int_t sm = -1;
389 
390  for(Int_t i = 0; i < nCells ; i++)
391  {
392  Int_t absId = index[i]; // or clus->GetCellNumber(i) ;
393  Double_t ampFract = fraction[i];
394  Float_t amp = cells.GetCellAmplitude(absId) ;
395  Double_t time = cells.GetCellTime(absId);
396  Bool_t hg = cells.GetCellHighGain(absId);
397 
398  cout<<"\t Cluster Cell: AbsID : "<< absId << " == "<<clus->GetCellAbsId(i) <<"; Amplitude "<< amp;
399  cout<< "; Fraction "<<ampFract<<"; Time " <<time*1e9<<"; High Gain? "<<hg<<endl;
400 
401  if(kPrintKine)
402  {
403  Float_t eDepFrac[4];
404  clus->GetCellMCEdepFractionArray(i,eDepFrac);
405  Int_t map = 0;
406  if(clus->GetCellsMCEdepFractionMap()) map = clus->GetCellsMCEdepFractionMap()[i];
407  printf("\t \t cell MC label index %d, cell MC deposited energy map %d: p1 %2.2f, p2 %2.2f, p3 %2.2f p4 %2.2f\n",
408  cells.GetCellMCLabel(absId),map,eDepFrac[0],eDepFrac[1],eDepFrac[2],eDepFrac[3]);
409  }
410 
411  // Geometry methods
412  Int_t iSupMod = 0 ;
413  Int_t iTower = 0 ;
414  Int_t iIphi = 0 ;
415  Int_t iIeta = 0 ;
416  Int_t iphi = 0 ;
417  Int_t ieta = 0 ;
418 
419  if(geom)
420  {
421  geom->GetCellIndex(absId,iSupMod,iTower,iIphi,iIeta);
422  //Gives SuperModule and Tower numbers
423  geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,
424  iIphi, iIeta,iphi,ieta);
425 
426  // Gives label of cell in eta-phi position per each supermodule
427  // Need alignment matrices, comment for now.
428 // Float_t cellPhi = 0;
429 // Float_t cellEta = 0;
430 // geom->EtaPhiFromIndex(absId,cellEta,cellPhi);
431 
432  cout<< " SModule "<<iSupMod<<"; Tower "<<iTower <<"; Eta "<<iIeta
433  <<"; Phi "<<iIphi<<"; Index: Cell Eta "<<ieta<<"; Cell Phi "<<iphi
434 // <<"; Global: Cell Eta "<<cellEta<<"; Cell Phi "<<cellPhi*TMath::RadToDeg()
435  <<endl;
436 
437  if ( i == 0 ) sm = iSupMod ;
438  else if ( sm != iSupMod) printf(" ******CLUSTER SHARED BY 2 SuperModules!!!!\n");
439  }// geometry on
440  }// cluster cell loop
441  }// print cell clusters
442  } //cluster loop
443  } // event loop
444 
445 
446  //Write histograms in a file
447  TFile * fhisto = (TFile*) new TFile("histos.root","recreate");
448  hEta->Write();
449  hPhi->Write();
450  hE ->Write();
451  hTime->Write();
452 
453  if(kPrintKine)
454  {
455  hMCEta->Write();
456  hMCPhi->Write();
457  hMCE ->Write();
458  hMCDEta->Write();
459  hMCDPhi->Write();
460  hMCDE ->Write();
461  }
462 
464  {
465  hTMEOverP->Write();
466  hTMDEta ->Write();
467  hTMDPhi ->Write();
468 
469 // hTMEOverPOut->Write();
470 // hTMDEtaOut ->Write();
471 // hTMDPhiOut ->Write();
472 
473  hTMResEta->Write();
474  hTMResPhi->Write();
475  }
476 
478  {
479  hEJEPatch->Write();
480  hEGAPatch->Write();
481  }
482 
483  fhisto->Close();
484 }
void GetTriggerBits(Int_t &bits) const
Get the trigger bits for a given fastor position.
AliAODCaloTrigger * GetCaloTrigger(TString calo) const
Definition: AliAODEvent.h:219
void ReadFromTree(TTree *tree, Option_t *opt="")
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
virtual void GetCellMCEdepFractionArray(Int_t, Float_t *) const
Definition: AliVCluster.h:134
AliTPCcalibPID * pid
Definition: CalibPID.C:69
virtual UShort_t * GetClusterMCEdepFraction() const
Definition: AliVCluster.h:139
virtual Double_t * GetCellsAmplitudeFraction()
Definition: AliVCluster.h:122
virtual Double_t E() const
Definition: AliVCluster.h:75
virtual Double_t GetCellTime(Short_t cellNumber)=0
virtual Double_t P() const
Definition: AliAODTrack.h:125
virtual Short_t GetCellNumber(Short_t pos) const =0
Bool_t kPrintClusterCells
Print cells in clusters information.
Definition: TestAOD.C:49
virtual Short_t GetNumberOfCells() const =0
virtual Double_t E() const
virtual Int_t GetNTracksMatched() const
Definition: AliVCluster.h:142
void GetPosition(Int_t &col, Int_t &row) const
Access to position of the current fastor channel.
Virtual class for calorimeter cell data handling.
Definition: AliVCaloCells.h:19
Bool_t kPrintTrackMatches
Print cluster-track matching information.
Definition: TestAOD.C:47
virtual Bool_t Next()
Forward to next trigger entry (fastor / L0 patch)
Container with calorimeter trigger information in the AOD event.
virtual Int_t GetCellMCLabel(Short_t cellNumber)=0
virtual void Reset()
virtual Double_t GetTrackDz(void) const
Definition: AliVCluster.h:112
virtual UShort_t * GetCellsAbsId()
Definition: AliVCluster.h:120
AliTPCfastTrack * track
Virtual class for calorimeter cluster data handling.
Definition: AliVCluster.h:20
TString GetFiredTriggerClasses() const
Definition: AliAODEvent.h:145
virtual Double_t Phi() const
Definition: AliAODTrack.h:118
void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t &iphi, Int_t &ieta) const
Bool_t kPrintClusterPID
Print clusters PID (bayesian) weights.
Definition: TestAOD.C:50
virtual Int_t GetMCLabel(Short_t pos) const =0
virtual Double_t Eta() const
Definition: AliAODTrack.h:164
void TestAOD()
Definition: TestAOD.C:55
Bool_t kPrintKine
Print MC related information. Do not use for raw data.
Definition: TestAOD.C:44
virtual Double_t GetAmplitude(Short_t pos) const =0
virtual Bool_t GetCellHighGain(Short_t cellNumber)=0
Bool_t GetCellIndex(Int_t absId, Int_t &nSupMod, Int_t &nModule, Int_t &nIphi, Int_t &nIeta) const
TObject * FindListObject(const char *objName) const
virtual Int_t * GetLabels() const
Definition: AliVCluster.h:128
virtual Double_t Eta() const
virtual Double_t GetCellAmplitude(Short_t cellNumber)=0
virtual Double_t GetTime(Short_t pos) const =0
virtual const Double_t * GetPID() const
Definition: AliVCluster.h:86
virtual Double_t GetTrackDx(void) const
Definition: AliVCluster.h:111
TF1 * f
Definition: interpolTest.C:21
Bool_t kPrintCaloCluster
Print cluster parameters.
Definition: TestAOD.C:48
virtual UInt_t GetNLabels() const
Definition: AliVCluster.h:129
virtual Int_t GetLabel() const
Definition: AliVCluster.h:126
virtual Double_t GetTOF() const
Definition: AliVCluster.h:106
virtual UChar_t GetNExMax() const
Definition: AliVCluster.h:103
virtual Double_t GetEFraction(Short_t pos) const =0
virtual UInt_t * GetCellsMCEdepFractionMap() const
Definition: AliVCluster.h:133
virtual Double_t Phi() const
AliAODCaloCells * GetEMCALCells() const
Definition: AliAODEvent.h:265
virtual TObject * GetTrackMatched(Int_t) const
Only for AODs.
Definition: AliVCluster.h:145
static AliEMCALGeometry * GetInstance()
TEveGeoShape * geom
Definition: tpc_tracks.C:10
virtual Int_t GetNCells() const
Definition: AliVCluster.h:118
virtual Bool_t GetHighGain(Short_t pos) const =0
void GetL1TimeSum(Int_t &timesum) const
Get the L1 time sums (L1 ADC values) for the current fastor.
Int_t GetEMCALClusters(TRefArray *clusters) const
Bool_t kPrintCaloCells
Print cells parameters.
Definition: TestAOD.C:45
EMCal geometry, singleton.
virtual Int_t GetCellAbsId(Int_t) const
Definition: AliVCluster.h:123
Bool_t kPrintCaloTrigger
Print trigger patches information.
Definition: TestAOD.C:46
virtual void GetPosition(Float_t *) const
Definition: AliVCluster.h:82