ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TString.h"
#include "TClonesArray.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "AliESDEvent.h"
#include "AliESDCaloCluster.h"
#include "TFile.h"
#include <iostream>
#endif

int read_HLT_ESDs(TString file = "AliESDs.root")
{

   TH2F *clusterPosXY = new TH2F("clusterPosXY", "clusterPosXY", 1000, -500, 500, 1000, -500, 500);
   TH2F *clusterPosXZ = new TH2F("clusterPosXZ", "clusterPosXZ", 1000,  -500, 500, 1000, -500, 500);
   
   TH1F *clusterEnergies = new TH1F("clusterEnergies", "clusterEnergies", 1100, 0, 110);
   
   TH1I *clusterMult = new TH1I("clusterMult", "clusterMult", 1000, 1, 1000);
   TFile *esdFile = TFile::Open(file, "READ");
   
   TTree *esdTree = dynamic_cast<TTree*>(esdFile->Get("HLTesdTree"));
   
   if(!esdTree) return -1;
   
   std::cout << "Number of events in ESD: " << esdTree->GetEntries() << std::endl;
   
   TClonesArray *clusters = 0;
   
   esdTree->SetBranchAddress("CaloClusters", &clusters);
   
   for(int ev = 0; ev < esdTree->GetEntries(); ev++)
   {
      esdTree->GetEntry(ev);
      
      cout << "Number of clusters in event: " << clusters->GetEntries() << endl;
      
      for(int c = 0; c < clusters->GetEntries(); c++)
      {
	 AliESDCaloCluster *cl = dynamic_cast<AliESDCaloCluster*>(clusters->At(c));
      
	 cout << "\tCluster #: " << c << ",   energy: " << cl->E() << endl;
	 
	 Float_t pos[3];
	 
	 cl->GetPosition(pos);
	 
	 cout << "\tx: " << pos[0] << ", y: " << pos[1] << ", z: " << pos[2] << endl;
	 
	 clusterPosXY->Fill(pos[0], pos[1]);
	 clusterPosXZ->Fill(pos[0], pos[2]);
	 
	 clusterEnergies->Fill(cl->E());
	 clusterMult->Fill(cl->GetNCells());
	 
	 
      }
   }
   //   AliESDEvent *esdEvent = reinterpret_cast<AliESDEvent*>(esdFile->Get("
   
//   clusterPos->Draw();
   
   //clusterEnergies->Draw();

   TCanvas *c1 = new TCanvas("c1", "", 0, 0, 800, 450);
   c1->Divide(2, 1);
   c1->cd(1);
   clusterEnergies->Draw();
   c1->cd(2);
   clusterMult->Draw();
   
   
   TCanvas *c2 = new TCanvas("c2", "", 10, 10, 800, 450);
   c2->Divide(2, 1);
   c2->cd(1);
   clusterPosXY->Draw();
   c2->cd(2);
   clusterPosXZ->Draw();
	    
   return 0;
 read_HLT_ESDs.C:1
 read_HLT_ESDs.C:2
 read_HLT_ESDs.C:3
 read_HLT_ESDs.C:4
 read_HLT_ESDs.C:5
 read_HLT_ESDs.C:6
 read_HLT_ESDs.C:7
 read_HLT_ESDs.C:8
 read_HLT_ESDs.C:9
 read_HLT_ESDs.C:10
 read_HLT_ESDs.C:11
 read_HLT_ESDs.C:12
 read_HLT_ESDs.C:13
 read_HLT_ESDs.C:14
 read_HLT_ESDs.C:15
 read_HLT_ESDs.C:16
 read_HLT_ESDs.C:17
 read_HLT_ESDs.C:18
 read_HLT_ESDs.C:19
 read_HLT_ESDs.C:20
 read_HLT_ESDs.C:21
 read_HLT_ESDs.C:22
 read_HLT_ESDs.C:23
 read_HLT_ESDs.C:24
 read_HLT_ESDs.C:25
 read_HLT_ESDs.C:26
 read_HLT_ESDs.C:27
 read_HLT_ESDs.C:28
 read_HLT_ESDs.C:29
 read_HLT_ESDs.C:30
 read_HLT_ESDs.C:31
 read_HLT_ESDs.C:32
 read_HLT_ESDs.C:33
 read_HLT_ESDs.C:34
 read_HLT_ESDs.C:35
 read_HLT_ESDs.C:36
 read_HLT_ESDs.C:37
 read_HLT_ESDs.C:38
 read_HLT_ESDs.C:39
 read_HLT_ESDs.C:40
 read_HLT_ESDs.C:41
 read_HLT_ESDs.C:42
 read_HLT_ESDs.C:43
 read_HLT_ESDs.C:44
 read_HLT_ESDs.C:45
 read_HLT_ESDs.C:46
 read_HLT_ESDs.C:47
 read_HLT_ESDs.C:48
 read_HLT_ESDs.C:49
 read_HLT_ESDs.C:50
 read_HLT_ESDs.C:51
 read_HLT_ESDs.C:52
 read_HLT_ESDs.C:53
 read_HLT_ESDs.C:54
 read_HLT_ESDs.C:55
 read_HLT_ESDs.C:56
 read_HLT_ESDs.C:57
 read_HLT_ESDs.C:58
 read_HLT_ESDs.C:59
 read_HLT_ESDs.C:60
 read_HLT_ESDs.C:61
 read_HLT_ESDs.C:62
 read_HLT_ESDs.C:63
 read_HLT_ESDs.C:64
 read_HLT_ESDs.C:65
 read_HLT_ESDs.C:66
 read_HLT_ESDs.C:67
 read_HLT_ESDs.C:68
 read_HLT_ESDs.C:69
 read_HLT_ESDs.C:70
 read_HLT_ESDs.C:71
 read_HLT_ESDs.C:72
 read_HLT_ESDs.C:73
 read_HLT_ESDs.C:74
 read_HLT_ESDs.C:75
 read_HLT_ESDs.C:76
 read_HLT_ESDs.C:77
 read_HLT_ESDs.C:78
 read_HLT_ESDs.C:79
 read_HLT_ESDs.C:80
 read_HLT_ESDs.C:81
 read_HLT_ESDs.C:82
 read_HLT_ESDs.C:83
 read_HLT_ESDs.C:84