ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2002, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

//_________________________________________________________________________
// This is a set of histogram
// utilities for the EMCAL
// to make some common
// functions easier
//
//*-- Authors: J.L. Klay (LLNL) & Aleksei Pavlinov (WSU) 

#include "AliEMCALHistoUtilities.h"

#include <iostream>
#include <iomanip>
#include <fstream>

#include <TROOT.h>
#include <TPad.h>
#include <TFile.h>
#include <TH1.h>
#include <TH2.h>
#include <TProfile.h>
#include <THnSparse.h>
#include <TF1.h>
#include <TGraph.h>
#include <TGraphErrors.h>
#include <TLatex.h>
#include <TChain.h>
#include <TList.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TRegexp.h>
#include <TString.h>
#include <TLorentzVector.h>
#include <Gtypes.h> // color, line style and so on
#include <TArrayF.h>

//#include "AliESDCaloCluster.h"
//#include "AliEMCALRecPoint.h"
//#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#include "AliGenPythiaEventHeader.h"

using namespace std;

ClassImp(AliEMCALHistoUtilities)

AliEMCALHistoUtilities::AliEMCALHistoUtilities(const char *name, const char *tit) : TNamed(name,tit)
{
  // constructor
}

AliEMCALHistoUtilities::~AliEMCALHistoUtilities()
{
	//destructor
}  

TList* AliEMCALHistoUtilities::MoveHistsToList(const char* name, Bool_t putToBrowser, Bool_t setOwner)
{
  // Move HIST to list
  gROOT->cd();
  TIter nextHist(gDirectory->GetList());
  TList *list = new TList;
  list->SetName(name);
  if(setOwner) list->SetOwner(setOwner);
  TObject *objHist=0;
  // Move from gROOT to list
  while((objHist=nextHist())){
    //objHist->Dump();
    if (!objHist->InheritsFrom("TH1")) continue;
    ((TH1*)objHist)->SetDirectory(0);
    list->Add(objHist);
  }
  // Clear gROOT
  gDirectory->GetList()->Clear();

  if(putToBrowser) gROOT->GetListOfBrowsables()->Add((TObject*)list);
  return list;
}

void AliEMCALHistoUtilities::FillH1(TList *l, Int_t ind, Double_t x, Double_t w, Double_t error)
{
  //fill 1d histogram
  static TH1* hid=0;
  static int  bin=0;
  if(l == 0) return;

  if(ind>=0 && ind < l->GetSize()){
    hid = dynamic_cast<TH1 *>(l->At(ind));
    if (hid==0) return;

    if(error <= 0.0) { // standard way
      hid->Fill(x,w);
    } else {
      bin = hid->FindBin(x);
      hid->SetBinContent(bin,w);
      hid->SetBinError(bin,error);
    }
  }
}

void AliEMCALHistoUtilities::FillH2(TList *l, Int_t ind, Double_t x, Double_t y, Double_t w)
{
  //fill 2d histogram
  static TH2* hid=0;
  if(l == 0) return;
  if(ind>=0 && ind < l->GetSize()){
    hid = dynamic_cast<TH2 *>(l->At(ind));
    if(hid) hid->Fill(x,y,w);
  }
}

void AliEMCALHistoUtilities::FillHProf(TList *l, Int_t ind, Double_t x, Double_t y, Double_t w)
{
  // fill profile histogram
  static TProfile* h=0;
  if(l == 0) return;
  if(ind>=0 && ind < l->GetSize()){
    h = dynamic_cast<TProfile *>(l->At(ind));
    if(h) h->Fill(x,y,w);
  }
}

void AliEMCALHistoUtilities:: FillHnSparse(TList *l, Int_t ind, Double_t* x, Double_t w)
{
  // Nov 02,2010: fill THnSparse hist
  static THnSparse* hsp=0;
  if(l==0 || x==0) return;
  if(ind>=0 && ind < l->GetSize()){
    hsp = dynamic_cast<THnSparse *>(l->At(ind));
    if(hsp) hsp->Fill(x,w);
  }
}

int AliEMCALHistoUtilities::SaveListOfHists(TList *mylist,const char* name,Bool_t kSingleKey,const char* opt)
{
  //write histograms to file
  printf(" Name of out file |%s|\n", name); 
  int save = 0;
  if(mylist && mylist->GetSize() && strlen(name)){
    TString nf(name); 
    if(nf.Contains(".root") == kFALSE) nf += ".root";
    TFile file(nf.Data(),opt);
    TIter nextHist(mylist);
    TObject* objHist=0;
    int nh=0;
    if(kSingleKey) {
       file.cd();
       mylist->Write(mylist->GetName(),TObject::kSingleKey);
       mylist->ls();
       save = 1;
    } else {
      while((objHist=nextHist())) { // loop over list 
        if(objHist->InheritsFrom("TH1")) {
          TH1* hid = (TH1*)objHist;
          file.cd();
          hid->Write();
          nh++;
          printf("Save hist. %s \n",hid ->GetName());
        }
      }
      printf("%i hists. save to file -> %s\n", nh,file.GetName());
      if(nh>0) save = 1;
    }
    file.Close();
  } else {
    printf("AliEMCALHistoUtilities::SaveListOfHists : N O  S A V I N G \n");
  }
  return save;
}

void AliEMCALHistoUtilities::AddToNameAndTitle(TNamed *h, const char *name, const char *title)
{
  // Oct 15, 2007
  if(h==0) return;
  if(name  && strlen(name))  h->SetName(Form("%s%s",h->GetName(),name));
  if(title && strlen(title)) h->SetTitle(Form("%s%s",h->GetTitle(),title));
}

void AliEMCALHistoUtilities::AddToNameAndTitleToList(TList *l, const char *name, const char *title)
{
  // Oct 15, 2007
  if(l==0) return;
  if(name || title) {
    for(int i=0; i<l->GetSize(); i++) {
      TObject *o = l->At(i);
      if(o->InheritsFrom("TNamed")) {
        TNamed *h = dynamic_cast<TNamed *>(o);
        AddToNameAndTitle(h, name, title);
      }
    }
  }
}

void AliEMCALHistoUtilities::ResetListOfHists(TList *l)
{
  // Oct 15, 2007
  if(l==0) return;
  for(int i=0; i<l->GetSize(); i++) {
    TH1F* h = (TH1F*)l->At(i);
    h->Reset(); 
  }
}

void AliEMCALHistoUtilities::Titles(TH1 *hid, const char *titx,const char *tity)
{
  if(hid) {
    hid->SetXTitle(titx);
    hid->SetYTitle(tity);
  } else {
    printf("<W> TAliasPAI::titles() -> hid is 0 !\n");
  }
}

TList* AliEMCALHistoUtilities::CreateProjectionsX(TList *l, const Int_t ind, const Char_t* name)
{
  // Sep 4 - seperate list for projections
  TH2F *hid = dynamic_cast<TH2F *>(l->At(ind));
  if(hid == 0) {
    printf("<E> Object at ind %i is %s : should ne TH2F \n",
	   ind, l->At(ind)->ClassName());
    return 0;
  }
 
  TList *lpt = new TList;
  lpt->SetName(Form("%s%s", hid->GetName(), name));
  l->Add(lpt);

  TAxis*  yax   = hid->GetYaxis();
  TString tity  = yax->GetTitle();
  tity.ReplaceAll(" ","");
  TString name1 = hid->GetName();
  TString nam   = name1(3,name1.Length()-3);
  TString tit1  = hid->GetTitle(), tit=tit1;

  TH1::AddDirectory(0);

  TH1D *hd = hid->ProjectionX(Form("00_%sProx",nam.Data()), 1, yax->GetNbins());
  tit += Form(" : %5.2f < %s < %5.2f (GeV/c)", yax->GetXmin(),tity.Data(),yax->GetXmax());
  hd->SetTitle(tit.Data());
  lpt->Add(hd);

  for(Int_t iy=1; iy<=yax->GetNbins(); iy++){
    tit = tit1; 
    tit += Form(" : %5.2f < %s  < %5.2f (GeV/c)", yax->GetBinLowEdge(iy), tity.Data(), yax->GetBinUpEdge(iy));
    hd = hid->ProjectionX(Form("%2.2i_%sProx%i",iy, nam.Data(),iy),iy,iy);
    hd->SetTitle(tit.Data());
    lpt->Add(hd);    
  }

  return lpt;
}

TLatex *AliEMCALHistoUtilities::Lat(const char *text, Float_t x,Float_t y, Int_t align, Float_t tsize, short tcolor)
{ 
  // Oct 15, 2007
  double y1=y;
  TLatex *latex = new TLatex;
  latex->SetTextAlign(align);
  latex->SetTextSize(tsize);
  latex->SetTextColor(tcolor);
  latex->DrawLatex(x, y1, text);
  printf("<I> AliEMCALHistoUtilities::lat() -> %s gPad->GetLogy() %i\n", 
  text, gPad->GetLogy());
  return latex;
}

TGraph *AliEMCALHistoUtilities::DrawGraph(Int_t n, Double_t *x, Double_t *y, Int_t markerColor, 
Int_t markerStyle, const char* opt, const char* tit, const char* xTit,const char* yTit, Int_t ifun,  
const char *optFit, const char *fun)
{
  /* Drawing options 
  chopt='L' :  A simple polyline between every points is drawn
  chopt='F' :  A fill area is drawn ('CF' draw a smooth fill area)
  chopt='A' :  Axis are drawn around the graph
  chopt='C' :  A smooth Curve is drawn
  chopt='*' :  A Star is plotted at each point
  chopt='P' :  Idem with the current marker
  chopt='B' :  A Bar chart is drawn at each point
  chopt='1' :  ylow=rwymin
  chopt='X+' : The X-axis is drawn on the top side of the plot.
  chopt='Y+' : The Y-axis is drawn on the right side of the plot.

    Fitting options
   The list of fit options is given in parameter option.
      option = "W"  Set all errors to 1
             = "U" Use a User specified fitting algorithm (via SetFCN)
             = "Q" Quiet mode (minimum printing)
             = "V" Verbose mode (default is between Q and V)
             = "B" Use this option when you want to fix one or more parameters
                   and the fitting function is like "gaus","expo","poln","landau".
             = "R" Use the Range specified in the function range
             = "N" Do not store the graphics function, do not draw
             = "0" Do not plot the result of the fit. By default the fitted function
                   is drawn unless the option"N" above is specified.
             = "+" Add this new fitted function to the list of fitted functions
                   (by default, any previous function is deleted)
             = "C" In case of linear fitting, not calculate the chisquare
                    (saves time)
             = "F" If fitting a polN, switch to minuit fitter
             = "ROB" In case of linear fitting, compute the LTS regression
                     coefficients (robust(resistant) regression), using
                     the default fraction of good points
               "ROB=0.x" - compute the LTS regression coefficients, using
                           0.x as a fraction of good points

  */
  printf("AliEMCALHistoUtilities::drawGraph started \n");
  printf("Drawing opt |%s| : Fitting opt |%s|\n", opt, optFit);

    TGraph *gr = new TGraph(n, x, y);
    gr->SetMarkerColor(markerColor);
    gr->SetLineColor(markerColor);
    gr->SetMarkerStyle(markerStyle);
    gr->SetTitle(tit);
    gr->Draw(opt);

    TString ctmp(opt);
    if(ctmp.Contains("A")) {
       gr->GetHistogram()->SetXTitle(xTit);
       gr->GetHistogram()->SetYTitle(yTit);
    }
    ctmp = optFit; 
    if(ifun>=0) {
      TString sf("pol"); sf += ifun;
      gr->Fit(sf.Data(),optFit);
      printf("\n ** Fit by Polynomial of degree %i : %s **\n", ifun, sf.Data());
    } else if(!ctmp.Contains("no",TString::kIgnoreCase)){
      printf("\n ** ifun %i : %s **\n", ifun, fun);
      gr->Fit(fun, optFit);
    }

    return gr;
}

TGraphErrors *AliEMCALHistoUtilities::DrawGraphErrors(const Int_t n,Double_t *x,Double_t *y,Double_t *ex, 
Double_t *ey, Int_t markerColor,  Int_t markerStyle, const char* opt, const char* tit, 
const char* xTit,const char* yTit, Int_t ifun, const char *optFit, const char *fun)
{
  // Oct 15, 2007
  printf("AliEMCALHistoUtilities::drawGraphErrors started \n");
  printf("Drawing opt |%s| : ifun %i: Fitting opt |%s|, fun |%s|\n", 
	 opt, ifun, optFit, fun);

  TGraphErrors *gr = new TGraphErrors(n, x,y,ex,ey);
  gr->SetMarkerColor(markerColor);
  gr->SetLineColor(markerColor);
  gr->SetMarkerStyle(markerStyle);
  if(tit&&strlen(tit)>0) gr->SetTitle(tit);

  TString ctmp(opt);
  if(ctmp.Contains("A")) {
     gr->GetHistogram()->SetXTitle(xTit);
     gr->GetHistogram()->SetYTitle(yTit);
  }
  if(ifun>0) {
    if(ifun != 999) {
      TString sf("pol"); sf += ifun;
      gr->Fit(sf.Data(),optFit);
      printf("\n ** Fit by Polynomial of degree %i : %s **\n", ifun, sf.Data());
    } else {
      gr->Fit(fun, optFit);
      printf("\n ** Fit by %s **\n", fun);
    }
  } else {
    if(strlen(optFit)) {
      printf("\n ** ifun %i : %s **\n", ifun, fun);
      gr->Fit(fun, optFit);
    }
  }

  gr->Draw(opt);

  return gr;
}

TF1* AliEMCALHistoUtilities::GetResolutionFunction(const char *opt, TString &latexName)
{
  // Oct 15, 2007
  TString sopt(opt);
  sopt.ToUpper();
  TF1 *fres=0;
  if      (sopt.Contains("FRES1")) {
    fres = new TF1("fres","[0]+[1]/sqrt(x)", 0.0, 101.);
    latexName = "#frac{#sigma_{E}}{E} = A+#frac{B}{#sqrt{E}}";
  } else if(sopt.Contains("FRES2")) { 
    fres = new TF1("fres","sqrt([0]*[0]+[1]*[1]/x)", 0.0, 101.);
    latexName = "#sqrt{A^{2}+#frac{B^{2}}{E}}";
  }
  if(fres) {
    fres->SetParName(0,"A");
    fres->SetParName(1,"B");

    fres->SetParameter(0, 2.0);
    fres->SetParameter(1, 6.6);
    fres->SetLineWidth(2);
    fres->SetLineColor(kRed);
  }
  return fres;
}

void AliEMCALHistoUtilities::InitChain(TChain *chain, const char* nameListOfFiles, Int_t nFileMax)
{
  // Read name of files from text file with nameListOfFiles and added to the chain
  if(chain==0 || nameListOfFiles==0) return;
 
  ifstream fin;
  fin.open(nameListOfFiles);
  if (!fin.is_open()) {
    cout << "Input file "<<nameListOfFiles<<" cannot be opened.\n";
    return;
  }

  Int_t nfiles = 0; // number of files in chain
  char nf[200];     // name of current file
  while (!fin.getline(nf,200).eof()) {
    if(!fin.good()) break;
    chain->Add(nf);
    nfiles++;
    cout<<nfiles<<" "<<nf<<endl;
    if(nFileMax && nfiles>=nFileMax) break;
  }
  fin.close();
  //
  cout << " \n ********** <I> Accepted file "<< nfiles << "********* \n"<<endl;
  //  chainEsd->Print();
  //  chain->Lookup();
}

//AliRunLoader* AliEMCALHistoUtilities::InitKinematics(const Int_t nev, const char* galiceName)
//{
//  // Oct 15, 2007
//  // nev == 0 - new file
//  static AliRunLoader *rl = 0;
//
//  if((rl == 0 || nev==0) && galiceName) {
//    //printf("<I> AliEMCALHistoUtilities::InitKinematics() : nev %i : rl %p : %s (IN)\n", 
//	// nev, rl, galiceName);  
//    if(rl)  {
//      rl->UnloadgAlice();
//      delete rl;
//    }
//    rl = AliRunLoader::Open(galiceName,AliConfig::GetDefaultEventFolderName(),"read");
//    rl->LoadgAlice(); // obligatory
//    //printf("<I> AliEMCALHistoUtilities::InitKinematics() : nev %i : rl %p : %s (OUT)\n", 
//	 //nev, rl, galiceName);  
//  }
//  if(rl) {
//    rl->GetEvent(nev);
//    rl->LoadKinematics();
//    /* Get what you need after that
//      rl->LoadHits();
//      AliStack *stack=rl->Stack();
//      AliESDCaloCluster * clus = esd->GetCaloCluster(n);
//      Int_t label = clus->GetLabel(); // what is this 
//      TParticle *primary=stack->Particle(label); 
//    */
//  }
//  return rl;
//}

//AliRunLoader* AliEMCALHistoUtilities::GetRunLoader(const Int_t nev, const Char_t* galiceName,
//				       const Char_t* eventFolderName, AliRunLoader* rlOld)
//{
//  // Nov 26, 2007
//  // nev == 0 - new file
//  AliRunLoader *rl = 0;
//
//  if(nev==0 && galiceName) {
//    printf("<I> AliEMCALHistoUtilities::GetLoader() : nev %i : %s (IN)\n", 
//	   nev, galiceName);  
//    if(rlOld) {
//      rlOld->UnloadgAlice();
//      delete rlOld;
//    }
//    TString folderName(eventFolderName);
//    if(folderName.Length() == 0) folderName = AliConfig::GetDefaultEventFolderName();
//    rl = AliRunLoader::Open(galiceName, folderName.Data(),"read");
//    rl->LoadgAlice(); // obligatory
//    printf("<I> AliEMCALHistoUtilities::GetLoader() : nev %i : %s : %s (OUT)\n", 
//	   nev, galiceName, folderName.Data());  
//  } else {
//    rl = rlOld;
//  }
//  if(rl) rl->LoadgAlice(); // obligatory
//  // if(rl) rl->GetEvent(nev);
//  return rl;
//}

Double_t AliEMCALHistoUtilities::GetMomentum(const char* nameListOfFiles)
{
  // Get momentum value from string  - like /....100GEV/.. 
  Double_t p=-1; // negative if undefined 
  TString st(nameListOfFiles);
  if(st.Length()>=5) {
    st.ToUpper();
    Ssiz_t ind1 = st.Index("GEV"), ind2=0;
    if(ind1>0) {
      for(Int_t i=2; i<=10; i++) {
        ind2 = st.Index("/",ind1-i);
        if(ind2>0 && ind2<ind1) break;
      }
      TString mom  = st(ind2+1, ind1-ind2-1);
      if(mom.IsFloat()) p = mom.Atof();
      printf(" dir |%s| : mom |%s| : p %f : ind2,1 %i->%i\n", st.Data(), mom.Data(), p, ind2, ind1);
    }
  }
  return p;
}

int AliEMCALHistoUtilities::ParseString(const TString &topt, TObjArray &Opt)
{ 
  // Moved from AliEMCALGeometry
  // Feb 06, 2006
  Ssiz_t begin, index, end, end2;
  begin = index = end = end2 = 0;
  TRegexp separator("[^ ;,\\t\\s/]+");
  while ( (begin < topt.Length()) && (index != kNPOS) ) {
    // loop over given options
    index = topt.Index(separator,&end,begin);
    if (index >= 0 && end >= 1) {
      TString substring(topt(index,end));
      Opt.Add(new TObjString(substring.Data()));
    }
    begin += end+1;
  }
  return Opt.GetEntries();
}

// Analysis utilites
//Bool_t AliEMCALHistoUtilities::GetLorentzVectorFromESDCluster(TLorentzVector &v, const AliESDCaloCluster* cl)
//{
//  // May 8, 2007
//  static Double_t e=0.0;
//  static Float_t pos[3];
//  static TVector3 gpos;
//  if(cl==0) return kFALSE;
//  
//  e = Double_t(cl->E());
//  if(e<=0.0) {
//    printf(" negative cluster energy : %f \n", e);
//    return kFALSE;
//  }
//  cl->GetPosition(pos);
//  gpos.SetXYZ(Double_t(pos[0]), Double_t(pos[1]), Double_t(pos[2]));
//  gpos.SetMag(e);
//  v.SetVectM(gpos, 0.0);
//
//  return kTRUE;
//}

//Bool_t AliEMCALHistoUtilities::GetLorentzVectorFromRecPoint(TLorentzVector &v, const AliEMCALRecPoint  *rp)
//{
//  // Jun 20, 2007
//  static Double_t e=0.0;
//  static TVector3 gpos;
//  if(rp==0) return kFALSE;
//  
//  e = Double_t(rp->GetPointEnergy());
//  if(e<=0.0) {
//    printf(" negative rec.point energy : %f \n", e);
//    return kFALSE;
//  }
//  rp->GetGlobalPosition(gpos);
//  gpos.SetMag(e);
//  v.SetVectM(gpos, 0.0);
//
//  return kTRUE;
//}
//
//// Drawing:
//
void AliEMCALHistoUtilities::DrawHist(TH1* hid,int lineWidth,int lineColor,const char* opt, int lineStyle)
{
  // Oct 15, 2007
  TString sopt;
  sopt = opt;
  if(!hid) return;
  printf(" Hist. %s : option |%s| \n", hid->GetName(), opt);
  if(hid && hid->GetEntries()>=1.) {
    if(lineWidth) hid->SetLineWidth(lineWidth);
    if(lineColor) hid->SetLineColor(lineColor);
    if(lineStyle) hid->SetLineStyle(lineStyle);
    if(sopt.Contains("stat",TString::kIgnoreCase)) hid->SetStats(kTRUE);
    hid->Draw(opt);
  } else {
    if   (strcmp(opt,"empty")==0) hid->Draw();
    else printf(" has fewer entries %i or hid is zero\n", (int) hid->GetEntries());
  }
}

//
//// Fitting:
//
TF1* AliEMCALHistoUtilities::Gausi(const char *addName,double xmi,double xma,double N,double mean,double sig,double width)
{ 
  // Fit by gaus where first parameter is the number of events under ga
  // Oct 15, 2007
  TString name("gi");
  name += addName;
  TF1 *f = new TF1(name.Data(), Gi, xmi, xma, 4); 
  f->SetParNames("INTEGRAL","MEAN","SIGMA","WIDTH");

  f->SetParameter(0,N);
  f->SetParameter(1,mean);
  f->SetParameter(2,sig);

  f->FixParameter(3,width); // width of histogramm bin
  return f;
}

TF1* AliEMCALHistoUtilities::Gausi(const char *addName, double xmi, double xma, TH1 *h) 
{
  // You can change parameters after that if you don't like this assumption
  if(h) return Gausi(addName, xmi, xma, h->Integral(), h->GetMean(),h->GetRMS(), h->GetBinWidth(1));
  else  return 0; 
}

TF1* AliEMCALHistoUtilities::GausiPol2(const char *addName,double xmi,double xma, TF1 *g, TF1* bg)
{ 
  // Fit by gaus where first parameter is the number of events under ga
  TString name("giPol2");
  name += addName;
  TF1 *f = new TF1(name.Data(), GiPol2, xmi, xma, 7); 
  f->SetParNames("INTEGRAL","MEAN","SIGMA","WIDTH","a0","a1","a2");

  if(g) {
    for(int i=0; i<4; i++) f->SetParameter(i, g->GetParameter(i));
    f->FixParameter(3,g->GetParameter(3));
  }

  if(bg) {
    for(int i=4; i<7; i++) f->SetParameter(i, bg->GetParameter(i+4));
  }
  f->SetLineColor(kRed);
  return f;
}

Double_t AliEMCALHistoUtilities::Gi(Double_t *x, Double_t *par)
{ 
  // First parameter is integral (number events under gaus)
  // Forth parameter (par[3]) is width of histogram bin 
  // gaus(0) is a substitute for [0]*exp(-0.5*((x-[1])/[2])**2)

  static Double_t c = TMath::Sqrt(2.*TMath::Pi()), y=0.0, f=0.0; // sqrt(2.*pi)

  y  = (x[0]-par[1])/par[2];
  f  = par[0]*par[3]/(par[2]*c) * TMath::Exp(-0.5*y*y);

  return f;
}

Double_t AliEMCALHistoUtilities::GiPol2(Double_t *x, Double_t *par)
{ 
  // First parameter is integral (number events under gaus)
  // Forth parameter (par[3]) is width of histogram bin 
  // gaus(0) is a substitute for [0]*exp(-0.5*((x-[1])/[2])**2)
  // + pol2 -> 7 parameters
  static Double_t c = TMath::Sqrt(2.*TMath::Pi()), y=0.0, f=0.0; // sqrt(2.*pi)

  y  = (x[0]-par[1])/par[2];
  f  = par[0]*par[3]/(par[2]*c) * TMath::Exp(-0.5*y*y);

  f += par[4] + par[5]*x[0] + par[6]*x[0]*x[0];

  return f;
}

// Calibration stuff
Double_t AliEMCALHistoUtilities::GetCorrectionCoefficientForGamma1(const Double_t eRec)
{
  // Correction to rec.energy - Jul 15, 2007
  // E(gamma) = corr * E(eRec);
  /* corr = p0*(eRec-7.5)+p1*(eRec-7.5)*(eRec-7.5)+p2; 0.0<eRec<10.0
   1  p0           6.07157e-05   1.15179e-04  -0.00000e+00   1.20997e-03
   2  p1           1.50019e-04   3.13566e-05  -0.00000e+00   1.22531e-02
   3  p2           9.99019e-01   4.08251e-04  -0.00000e+00   1.40606e-03

     corr = p3 + p4*eRec + p5*eRec*eRec
   1  p3           9.97135e-01   5.31970e-04   1.37962e-09   1.68120e-08
   2  p4           3.15740e-04   2.53371e-05   1.11475e-11   1.74192e-04
   3  p5          -1.35383e-06   2.19495e-07  -5.82864e-13   4.52277e-02
  */
  static Double_t p0=6.07157e-05, p1=1.50019e-04, p2=9.99019e-01;
  static Double_t p3=9.97135e-01, p4=3.15740e-04, p5=-1.35383e-06;
  static Double_t corr=1.0;
  if(eRec>=0.0 && eRec <=10.0) {
    corr = p0*(eRec-7.5) + p1*(eRec-7.5)*(eRec-7.5) + p2;
  } else if(eRec>10.0 && eRec <=105.0) {
    corr = p3 + p4*eRec + p5*eRec*eRec;
  }
  //printf(" eRec %f | corr %f \n", eRec, corr);
  return corr;
}

Double_t AliEMCALHistoUtilities::GetCorrectedEnergyForGamma1(const Double_t eRec)
{
  return GetCorrectionCoefficientForGamma1(eRec) * eRec;
}

// Trigger 
TList* AliEMCALHistoUtilities::GetTriggersListOfHists(const Int_t scale, const Int_t nTrig, const Bool_t toBrowser)
{
  // Oct 22, 2007 - trigger technical assurance
  gROOT->cd();
  TH1::AddDirectory(1);

  new TH1F("00_hXpos2x2", "X coord. of max Amp 2x2",100, -500., +500.);
  new TH1F("01_hYpos2x2", "Y coord. of max Amp 2x2",100, -500., +500.);
  new TH1F("02_hZpos2x2", "Z coord. of max Amp 2x2",100, -500., +500.);
  new TH1F("03_hXposnxn", "X coord. of max Amp NXN",100, -500., +500.);
  new TH1F("04_hYposnxn", "Y coord. of max Amp NXN",100, -500., +500.);
  new TH1F("05_hZposnxn", "Z coord. of max Amp NXN",100, -500., +500.);
  // May 7, 2008 - jet trigger
  new TH1F("06_hJetTriggerPhi", "%phi of COG of jet trigger patch", 110, 80., 190.);
  new TH1F("07_hJetTriggerEta", "%eta of COG of jet trigger patch", 70, -0.7, +0.7);
  // 
  new TH1F("08_hMaxAmp2x2", "max Amp 2x2", 1000, 0.0, pow(2.,14.));
  new TH1F("09_hAmpOutOf2x2", "Amp out of patch 2x2", 1000, 0.0, pow(2.,14.));
  new TH1F("10_hMaxAmpnxn", "max Amp NXN", 1000, 0.0, pow(2.,14.));
  new TH1F("11_hAmpOutOfnxn", "Amp out of patch nxn", 1000, 0.0, pow(2.,14.));
  // May 7, 2008 - jet trigger
  for(Int_t i=0; i<nTrig; i++) {
    new TH1F(Form("%2.2i_hJetPatchAmp%2.2i",i+12,i), Form("jet patch amplitude : jet trig %i",i), 
    1000, 0.0, pow(2.,14.));
  }
  // For checking
  Double_t maxEdigit=100., maxN=1000., maxPC = 200.;
  if(scale==1) {
    maxN  *= 10.;
    maxPC *= 10.;
  }
  Int_t ind = 12+nTrig; 
  new TH1F(Form("%2.2i_hDigitsAmp",ind++), "amplitude of digits (PC)  ", 1001, -0.5, 1000.5);
  new TH1F(Form("%2.2i_hDigitsE",ind++), " energy of digits (PC)", 1000, 0.0, maxEdigit);
  new TH1F(Form("%2.2i_hNDigitsInPCs",ind++), " number of digits in PC's", 1000, 0.0, maxN);
  new TH1F(Form("%2.2i_hEinInPCs",ind++), " energy in PC's", 200, 0.0, maxPC);

  return MoveHistsToList("TriggerLiOfHists", toBrowser);
}

void AliEMCALHistoUtilities::FillTriggersListOfHists(TList *l, TArrayF *triggerPosition, TArrayF *triggerAmplitudes)
{
  // Oct 22, 2007 - trigger technical assurance
  if(l==0) {
    printf("<E> FillTriggersListOfHists() : list of hists undefined. \n");
    return;
  }
  for(int i=0; i<triggerPosition->GetSize(); i++) {
    FillH1(l, i, double(triggerPosition->At(i)));
  }

  for(int i=0; i<triggerAmplitudes->GetSize(); i++) {
    FillH1(l, triggerPosition->GetSize() + i, double(triggerAmplitudes->At(i)) );
  }
}

// Jet(s) kinematics 
TList* AliEMCALHistoUtilities::GetJetsListOfHists(Int_t njet, Bool_t toBrowser)
{
  // Oct 30, 2007
  gROOT->cd();
  TH1::AddDirectory(1);
  new TH1F("00_nJet", "number of jets in Pythia",5, -0.5, +4.5);
  int ic=1;
  for(Int_t ij=0; ij<njet; ij++)
  {
    new TH1F(Form("%2.2i_EtaOfJet%i",ic++,ij), Form("#eta of jet (%i)",ij),80, -2., 2.);
    new TH1F(Form("%2.2i_ThetaOfJet%i",ic++,ij), Form("#theta(degree) of jet (%i)",ij),
    180, 0.0, 180.);
    new TH1F(Form("%2.2i_PhiOfJet%i",ic++,ij), Form("#phi(degree) of jet (%i)",ij),
    180, 0.0, 360.);
    new TH1F(Form("%2.2i_PtOfJet%i",ic++,ij), Form(" p_{T} of jet (%i)",ij),
    200, 0.0, 200.);
    new TH1F(Form("%2.2i_EOfJet%i",ic++,ij), Form(" E of jet (%i)",ij),
    200, 0.0, 200.);
  }

  return MoveHistsToList("JetLiOfHists", toBrowser);
}

//void  AliEMCALHistoUtilities::FillJetKineListOfHists(TList *l, AliRunLoader* rl, TLorentzVector &goodJet)
//{
//  // Oct 30, 2007; Nov 07;
//  // goodJet - output; only one jet with EMCAL acceptance
//
//  // Bad case
//  goodJet.SetPxPyPzE(0., 0., 0., 0.); 
//
//  if(l==0 || rl==0) return;
//  //try to get trigger jet info
//  AliHeader* alih = rl->GetHeader();
//  if (alih == 0) return;
//
//  AliGenEventHeader * genh = alih->GenEventHeader();
//  if (genh == 0) return;
//
//  AliGenPythiaEventHeader* genhpy = dynamic_cast<AliGenPythiaEventHeader *>(genh);
//  if(genhpy==0) return; // Not Pythia
//
//  Int_t nj = genhpy->NTriggerJets();
//  FillH1(l, 0, double(nj));
//
//  TLorentzVector* jets[4];
//  nj = nj>4?4:nj;
//
//  int ic=1;
//  for (Int_t i=0; i< nj; i++) {
//     Float_t p[4];
//     genhpy->TriggerJet(i,p);
//     jets[i] = new TLorentzVector(p);
//     FillH1(l, ic++, jets[i]->Eta());
//     FillH1(l, ic++, jets[i]->Theta()*TMath::RadToDeg());
//     FillH1(l, ic++, TVector2::Phi_0_2pi(jets[i]->Phi())*TMath::RadToDeg());
//     FillH1(l, ic++, jets[i]->Pt());
//     FillH1(l, ic++, jets[i]->E());
//
//     //printf(" %i pj %f %f %f %f : ic %i\n", i, p[0], p[1], p[2], p[3], ic);
//     if(ic >= l->GetSize()) break;
//  }
//  if(nj==1) {
//    Double_t eta=jets[0]->Eta(), phi=TVector2::Phi_0_2pi(jets[0]->Phi())*TMath::RadToDeg();
//    if(TMath::Abs(eta)<0.5 && (phi>90.&&phi<180.)) {
//      goodJet = (*jets[0]);
//    }
//  }
//}
 AliEMCALHistoUtilities.cxx:1
 AliEMCALHistoUtilities.cxx:2
 AliEMCALHistoUtilities.cxx:3
 AliEMCALHistoUtilities.cxx:4
 AliEMCALHistoUtilities.cxx:5
 AliEMCALHistoUtilities.cxx:6
 AliEMCALHistoUtilities.cxx:7
 AliEMCALHistoUtilities.cxx:8
 AliEMCALHistoUtilities.cxx:9
 AliEMCALHistoUtilities.cxx:10
 AliEMCALHistoUtilities.cxx:11
 AliEMCALHistoUtilities.cxx:12
 AliEMCALHistoUtilities.cxx:13
 AliEMCALHistoUtilities.cxx:14
 AliEMCALHistoUtilities.cxx:15
 AliEMCALHistoUtilities.cxx:16
 AliEMCALHistoUtilities.cxx:17
 AliEMCALHistoUtilities.cxx:18
 AliEMCALHistoUtilities.cxx:19
 AliEMCALHistoUtilities.cxx:20
 AliEMCALHistoUtilities.cxx:21
 AliEMCALHistoUtilities.cxx:22
 AliEMCALHistoUtilities.cxx:23
 AliEMCALHistoUtilities.cxx:24
 AliEMCALHistoUtilities.cxx:25
 AliEMCALHistoUtilities.cxx:26
 AliEMCALHistoUtilities.cxx:27
 AliEMCALHistoUtilities.cxx:28
 AliEMCALHistoUtilities.cxx:29
 AliEMCALHistoUtilities.cxx:30
 AliEMCALHistoUtilities.cxx:31
 AliEMCALHistoUtilities.cxx:32
 AliEMCALHistoUtilities.cxx:33
 AliEMCALHistoUtilities.cxx:34
 AliEMCALHistoUtilities.cxx:35
 AliEMCALHistoUtilities.cxx:36
 AliEMCALHistoUtilities.cxx:37
 AliEMCALHistoUtilities.cxx:38
 AliEMCALHistoUtilities.cxx:39
 AliEMCALHistoUtilities.cxx:40
 AliEMCALHistoUtilities.cxx:41
 AliEMCALHistoUtilities.cxx:42
 AliEMCALHistoUtilities.cxx:43
 AliEMCALHistoUtilities.cxx:44
 AliEMCALHistoUtilities.cxx:45
 AliEMCALHistoUtilities.cxx:46
 AliEMCALHistoUtilities.cxx:47
 AliEMCALHistoUtilities.cxx:48
 AliEMCALHistoUtilities.cxx:49
 AliEMCALHistoUtilities.cxx:50
 AliEMCALHistoUtilities.cxx:51
 AliEMCALHistoUtilities.cxx:52
 AliEMCALHistoUtilities.cxx:53
 AliEMCALHistoUtilities.cxx:54
 AliEMCALHistoUtilities.cxx:55
 AliEMCALHistoUtilities.cxx:56
 AliEMCALHistoUtilities.cxx:57
 AliEMCALHistoUtilities.cxx:58
 AliEMCALHistoUtilities.cxx:59
 AliEMCALHistoUtilities.cxx:60
 AliEMCALHistoUtilities.cxx:61
 AliEMCALHistoUtilities.cxx:62
 AliEMCALHistoUtilities.cxx:63
 AliEMCALHistoUtilities.cxx:64
 AliEMCALHistoUtilities.cxx:65
 AliEMCALHistoUtilities.cxx:66
 AliEMCALHistoUtilities.cxx:67
 AliEMCALHistoUtilities.cxx:68
 AliEMCALHistoUtilities.cxx:69
 AliEMCALHistoUtilities.cxx:70
 AliEMCALHistoUtilities.cxx:71
 AliEMCALHistoUtilities.cxx:72
 AliEMCALHistoUtilities.cxx:73
 AliEMCALHistoUtilities.cxx:74
 AliEMCALHistoUtilities.cxx:75
 AliEMCALHistoUtilities.cxx:76
 AliEMCALHistoUtilities.cxx:77
 AliEMCALHistoUtilities.cxx:78
 AliEMCALHistoUtilities.cxx:79
 AliEMCALHistoUtilities.cxx:80
 AliEMCALHistoUtilities.cxx:81
 AliEMCALHistoUtilities.cxx:82
 AliEMCALHistoUtilities.cxx:83
 AliEMCALHistoUtilities.cxx:84
 AliEMCALHistoUtilities.cxx:85
 AliEMCALHistoUtilities.cxx:86
 AliEMCALHistoUtilities.cxx:87
 AliEMCALHistoUtilities.cxx:88
 AliEMCALHistoUtilities.cxx:89
 AliEMCALHistoUtilities.cxx:90
 AliEMCALHistoUtilities.cxx:91
 AliEMCALHistoUtilities.cxx:92
 AliEMCALHistoUtilities.cxx:93
 AliEMCALHistoUtilities.cxx:94
 AliEMCALHistoUtilities.cxx:95
 AliEMCALHistoUtilities.cxx:96
 AliEMCALHistoUtilities.cxx:97
 AliEMCALHistoUtilities.cxx:98
 AliEMCALHistoUtilities.cxx:99
 AliEMCALHistoUtilities.cxx:100
 AliEMCALHistoUtilities.cxx:101
 AliEMCALHistoUtilities.cxx:102
 AliEMCALHistoUtilities.cxx:103
 AliEMCALHistoUtilities.cxx:104
 AliEMCALHistoUtilities.cxx:105
 AliEMCALHistoUtilities.cxx:106
 AliEMCALHistoUtilities.cxx:107
 AliEMCALHistoUtilities.cxx:108
 AliEMCALHistoUtilities.cxx:109
 AliEMCALHistoUtilities.cxx:110
 AliEMCALHistoUtilities.cxx:111
 AliEMCALHistoUtilities.cxx:112
 AliEMCALHistoUtilities.cxx:113
 AliEMCALHistoUtilities.cxx:114
 AliEMCALHistoUtilities.cxx:115
 AliEMCALHistoUtilities.cxx:116
 AliEMCALHistoUtilities.cxx:117
 AliEMCALHistoUtilities.cxx:118
 AliEMCALHistoUtilities.cxx:119
 AliEMCALHistoUtilities.cxx:120
 AliEMCALHistoUtilities.cxx:121
 AliEMCALHistoUtilities.cxx:122
 AliEMCALHistoUtilities.cxx:123
 AliEMCALHistoUtilities.cxx:124
 AliEMCALHistoUtilities.cxx:125
 AliEMCALHistoUtilities.cxx:126
 AliEMCALHistoUtilities.cxx:127
 AliEMCALHistoUtilities.cxx:128
 AliEMCALHistoUtilities.cxx:129
 AliEMCALHistoUtilities.cxx:130
 AliEMCALHistoUtilities.cxx:131
 AliEMCALHistoUtilities.cxx:132
 AliEMCALHistoUtilities.cxx:133
 AliEMCALHistoUtilities.cxx:134
 AliEMCALHistoUtilities.cxx:135
 AliEMCALHistoUtilities.cxx:136
 AliEMCALHistoUtilities.cxx:137
 AliEMCALHistoUtilities.cxx:138
 AliEMCALHistoUtilities.cxx:139
 AliEMCALHistoUtilities.cxx:140
 AliEMCALHistoUtilities.cxx:141
 AliEMCALHistoUtilities.cxx:142
 AliEMCALHistoUtilities.cxx:143
 AliEMCALHistoUtilities.cxx:144
 AliEMCALHistoUtilities.cxx:145
 AliEMCALHistoUtilities.cxx:146
 AliEMCALHistoUtilities.cxx:147
 AliEMCALHistoUtilities.cxx:148
 AliEMCALHistoUtilities.cxx:149
 AliEMCALHistoUtilities.cxx:150
 AliEMCALHistoUtilities.cxx:151
 AliEMCALHistoUtilities.cxx:152
 AliEMCALHistoUtilities.cxx:153
 AliEMCALHistoUtilities.cxx:154
 AliEMCALHistoUtilities.cxx:155
 AliEMCALHistoUtilities.cxx:156
 AliEMCALHistoUtilities.cxx:157
 AliEMCALHistoUtilities.cxx:158
 AliEMCALHistoUtilities.cxx:159
 AliEMCALHistoUtilities.cxx:160
 AliEMCALHistoUtilities.cxx:161
 AliEMCALHistoUtilities.cxx:162
 AliEMCALHistoUtilities.cxx:163
 AliEMCALHistoUtilities.cxx:164
 AliEMCALHistoUtilities.cxx:165
 AliEMCALHistoUtilities.cxx:166
 AliEMCALHistoUtilities.cxx:167
 AliEMCALHistoUtilities.cxx:168
 AliEMCALHistoUtilities.cxx:169
 AliEMCALHistoUtilities.cxx:170
 AliEMCALHistoUtilities.cxx:171
 AliEMCALHistoUtilities.cxx:172
 AliEMCALHistoUtilities.cxx:173
 AliEMCALHistoUtilities.cxx:174
 AliEMCALHistoUtilities.cxx:175
 AliEMCALHistoUtilities.cxx:176
 AliEMCALHistoUtilities.cxx:177
 AliEMCALHistoUtilities.cxx:178
 AliEMCALHistoUtilities.cxx:179
 AliEMCALHistoUtilities.cxx:180
 AliEMCALHistoUtilities.cxx:181
 AliEMCALHistoUtilities.cxx:182
 AliEMCALHistoUtilities.cxx:183
 AliEMCALHistoUtilities.cxx:184
 AliEMCALHistoUtilities.cxx:185
 AliEMCALHistoUtilities.cxx:186
 AliEMCALHistoUtilities.cxx:187
 AliEMCALHistoUtilities.cxx:188
 AliEMCALHistoUtilities.cxx:189
 AliEMCALHistoUtilities.cxx:190
 AliEMCALHistoUtilities.cxx:191
 AliEMCALHistoUtilities.cxx:192
 AliEMCALHistoUtilities.cxx:193
 AliEMCALHistoUtilities.cxx:194
 AliEMCALHistoUtilities.cxx:195
 AliEMCALHistoUtilities.cxx:196
 AliEMCALHistoUtilities.cxx:197
 AliEMCALHistoUtilities.cxx:198
 AliEMCALHistoUtilities.cxx:199
 AliEMCALHistoUtilities.cxx:200
 AliEMCALHistoUtilities.cxx:201
 AliEMCALHistoUtilities.cxx:202
 AliEMCALHistoUtilities.cxx:203
 AliEMCALHistoUtilities.cxx:204
 AliEMCALHistoUtilities.cxx:205
 AliEMCALHistoUtilities.cxx:206
 AliEMCALHistoUtilities.cxx:207
 AliEMCALHistoUtilities.cxx:208
 AliEMCALHistoUtilities.cxx:209
 AliEMCALHistoUtilities.cxx:210
 AliEMCALHistoUtilities.cxx:211
 AliEMCALHistoUtilities.cxx:212
 AliEMCALHistoUtilities.cxx:213
 AliEMCALHistoUtilities.cxx:214
 AliEMCALHistoUtilities.cxx:215
 AliEMCALHistoUtilities.cxx:216
 AliEMCALHistoUtilities.cxx:217
 AliEMCALHistoUtilities.cxx:218
 AliEMCALHistoUtilities.cxx:219
 AliEMCALHistoUtilities.cxx:220
 AliEMCALHistoUtilities.cxx:221
 AliEMCALHistoUtilities.cxx:222
 AliEMCALHistoUtilities.cxx:223
 AliEMCALHistoUtilities.cxx:224
 AliEMCALHistoUtilities.cxx:225
 AliEMCALHistoUtilities.cxx:226
 AliEMCALHistoUtilities.cxx:227
 AliEMCALHistoUtilities.cxx:228
 AliEMCALHistoUtilities.cxx:229
 AliEMCALHistoUtilities.cxx:230
 AliEMCALHistoUtilities.cxx:231
 AliEMCALHistoUtilities.cxx:232
 AliEMCALHistoUtilities.cxx:233
 AliEMCALHistoUtilities.cxx:234
 AliEMCALHistoUtilities.cxx:235
 AliEMCALHistoUtilities.cxx:236
 AliEMCALHistoUtilities.cxx:237
 AliEMCALHistoUtilities.cxx:238
 AliEMCALHistoUtilities.cxx:239
 AliEMCALHistoUtilities.cxx:240
 AliEMCALHistoUtilities.cxx:241
 AliEMCALHistoUtilities.cxx:242
 AliEMCALHistoUtilities.cxx:243
 AliEMCALHistoUtilities.cxx:244
 AliEMCALHistoUtilities.cxx:245
 AliEMCALHistoUtilities.cxx:246
 AliEMCALHistoUtilities.cxx:247
 AliEMCALHistoUtilities.cxx:248
 AliEMCALHistoUtilities.cxx:249
 AliEMCALHistoUtilities.cxx:250
 AliEMCALHistoUtilities.cxx:251
 AliEMCALHistoUtilities.cxx:252
 AliEMCALHistoUtilities.cxx:253
 AliEMCALHistoUtilities.cxx:254
 AliEMCALHistoUtilities.cxx:255
 AliEMCALHistoUtilities.cxx:256
 AliEMCALHistoUtilities.cxx:257
 AliEMCALHistoUtilities.cxx:258
 AliEMCALHistoUtilities.cxx:259
 AliEMCALHistoUtilities.cxx:260
 AliEMCALHistoUtilities.cxx:261
 AliEMCALHistoUtilities.cxx:262
 AliEMCALHistoUtilities.cxx:263
 AliEMCALHistoUtilities.cxx:264
 AliEMCALHistoUtilities.cxx:265
 AliEMCALHistoUtilities.cxx:266
 AliEMCALHistoUtilities.cxx:267
 AliEMCALHistoUtilities.cxx:268
 AliEMCALHistoUtilities.cxx:269
 AliEMCALHistoUtilities.cxx:270
 AliEMCALHistoUtilities.cxx:271
 AliEMCALHistoUtilities.cxx:272
 AliEMCALHistoUtilities.cxx:273
 AliEMCALHistoUtilities.cxx:274
 AliEMCALHistoUtilities.cxx:275
 AliEMCALHistoUtilities.cxx:276
 AliEMCALHistoUtilities.cxx:277
 AliEMCALHistoUtilities.cxx:278
 AliEMCALHistoUtilities.cxx:279
 AliEMCALHistoUtilities.cxx:280
 AliEMCALHistoUtilities.cxx:281
 AliEMCALHistoUtilities.cxx:282
 AliEMCALHistoUtilities.cxx:283
 AliEMCALHistoUtilities.cxx:284
 AliEMCALHistoUtilities.cxx:285
 AliEMCALHistoUtilities.cxx:286
 AliEMCALHistoUtilities.cxx:287
 AliEMCALHistoUtilities.cxx:288
 AliEMCALHistoUtilities.cxx:289
 AliEMCALHistoUtilities.cxx:290
 AliEMCALHistoUtilities.cxx:291
 AliEMCALHistoUtilities.cxx:292
 AliEMCALHistoUtilities.cxx:293
 AliEMCALHistoUtilities.cxx:294
 AliEMCALHistoUtilities.cxx:295
 AliEMCALHistoUtilities.cxx:296
 AliEMCALHistoUtilities.cxx:297
 AliEMCALHistoUtilities.cxx:298
 AliEMCALHistoUtilities.cxx:299
 AliEMCALHistoUtilities.cxx:300
 AliEMCALHistoUtilities.cxx:301
 AliEMCALHistoUtilities.cxx:302
 AliEMCALHistoUtilities.cxx:303
 AliEMCALHistoUtilities.cxx:304
 AliEMCALHistoUtilities.cxx:305
 AliEMCALHistoUtilities.cxx:306
 AliEMCALHistoUtilities.cxx:307
 AliEMCALHistoUtilities.cxx:308
 AliEMCALHistoUtilities.cxx:309
 AliEMCALHistoUtilities.cxx:310
 AliEMCALHistoUtilities.cxx:311
 AliEMCALHistoUtilities.cxx:312
 AliEMCALHistoUtilities.cxx:313
 AliEMCALHistoUtilities.cxx:314
 AliEMCALHistoUtilities.cxx:315
 AliEMCALHistoUtilities.cxx:316
 AliEMCALHistoUtilities.cxx:317
 AliEMCALHistoUtilities.cxx:318
 AliEMCALHistoUtilities.cxx:319
 AliEMCALHistoUtilities.cxx:320
 AliEMCALHistoUtilities.cxx:321
 AliEMCALHistoUtilities.cxx:322
 AliEMCALHistoUtilities.cxx:323
 AliEMCALHistoUtilities.cxx:324
 AliEMCALHistoUtilities.cxx:325
 AliEMCALHistoUtilities.cxx:326
 AliEMCALHistoUtilities.cxx:327
 AliEMCALHistoUtilities.cxx:328
 AliEMCALHistoUtilities.cxx:329
 AliEMCALHistoUtilities.cxx:330
 AliEMCALHistoUtilities.cxx:331
 AliEMCALHistoUtilities.cxx:332
 AliEMCALHistoUtilities.cxx:333
 AliEMCALHistoUtilities.cxx:334
 AliEMCALHistoUtilities.cxx:335
 AliEMCALHistoUtilities.cxx:336
 AliEMCALHistoUtilities.cxx:337
 AliEMCALHistoUtilities.cxx:338
 AliEMCALHistoUtilities.cxx:339
 AliEMCALHistoUtilities.cxx:340
 AliEMCALHistoUtilities.cxx:341
 AliEMCALHistoUtilities.cxx:342
 AliEMCALHistoUtilities.cxx:343
 AliEMCALHistoUtilities.cxx:344
 AliEMCALHistoUtilities.cxx:345
 AliEMCALHistoUtilities.cxx:346
 AliEMCALHistoUtilities.cxx:347
 AliEMCALHistoUtilities.cxx:348
 AliEMCALHistoUtilities.cxx:349
 AliEMCALHistoUtilities.cxx:350
 AliEMCALHistoUtilities.cxx:351
 AliEMCALHistoUtilities.cxx:352
 AliEMCALHistoUtilities.cxx:353
 AliEMCALHistoUtilities.cxx:354
 AliEMCALHistoUtilities.cxx:355
 AliEMCALHistoUtilities.cxx:356
 AliEMCALHistoUtilities.cxx:357
 AliEMCALHistoUtilities.cxx:358
 AliEMCALHistoUtilities.cxx:359
 AliEMCALHistoUtilities.cxx:360
 AliEMCALHistoUtilities.cxx:361
 AliEMCALHistoUtilities.cxx:362
 AliEMCALHistoUtilities.cxx:363
 AliEMCALHistoUtilities.cxx:364
 AliEMCALHistoUtilities.cxx:365
 AliEMCALHistoUtilities.cxx:366
 AliEMCALHistoUtilities.cxx:367
 AliEMCALHistoUtilities.cxx:368
 AliEMCALHistoUtilities.cxx:369
 AliEMCALHistoUtilities.cxx:370
 AliEMCALHistoUtilities.cxx:371
 AliEMCALHistoUtilities.cxx:372
 AliEMCALHistoUtilities.cxx:373
 AliEMCALHistoUtilities.cxx:374
 AliEMCALHistoUtilities.cxx:375
 AliEMCALHistoUtilities.cxx:376
 AliEMCALHistoUtilities.cxx:377
 AliEMCALHistoUtilities.cxx:378
 AliEMCALHistoUtilities.cxx:379
 AliEMCALHistoUtilities.cxx:380
 AliEMCALHistoUtilities.cxx:381
 AliEMCALHistoUtilities.cxx:382
 AliEMCALHistoUtilities.cxx:383
 AliEMCALHistoUtilities.cxx:384
 AliEMCALHistoUtilities.cxx:385
 AliEMCALHistoUtilities.cxx:386
 AliEMCALHistoUtilities.cxx:387
 AliEMCALHistoUtilities.cxx:388
 AliEMCALHistoUtilities.cxx:389
 AliEMCALHistoUtilities.cxx:390
 AliEMCALHistoUtilities.cxx:391
 AliEMCALHistoUtilities.cxx:392
 AliEMCALHistoUtilities.cxx:393
 AliEMCALHistoUtilities.cxx:394
 AliEMCALHistoUtilities.cxx:395
 AliEMCALHistoUtilities.cxx:396
 AliEMCALHistoUtilities.cxx:397
 AliEMCALHistoUtilities.cxx:398
 AliEMCALHistoUtilities.cxx:399
 AliEMCALHistoUtilities.cxx:400
 AliEMCALHistoUtilities.cxx:401
 AliEMCALHistoUtilities.cxx:402
 AliEMCALHistoUtilities.cxx:403
 AliEMCALHistoUtilities.cxx:404
 AliEMCALHistoUtilities.cxx:405
 AliEMCALHistoUtilities.cxx:406
 AliEMCALHistoUtilities.cxx:407
 AliEMCALHistoUtilities.cxx:408
 AliEMCALHistoUtilities.cxx:409
 AliEMCALHistoUtilities.cxx:410
 AliEMCALHistoUtilities.cxx:411
 AliEMCALHistoUtilities.cxx:412
 AliEMCALHistoUtilities.cxx:413
 AliEMCALHistoUtilities.cxx:414
 AliEMCALHistoUtilities.cxx:415
 AliEMCALHistoUtilities.cxx:416
 AliEMCALHistoUtilities.cxx:417
 AliEMCALHistoUtilities.cxx:418
 AliEMCALHistoUtilities.cxx:419
 AliEMCALHistoUtilities.cxx:420
 AliEMCALHistoUtilities.cxx:421
 AliEMCALHistoUtilities.cxx:422
 AliEMCALHistoUtilities.cxx:423
 AliEMCALHistoUtilities.cxx:424
 AliEMCALHistoUtilities.cxx:425
 AliEMCALHistoUtilities.cxx:426
 AliEMCALHistoUtilities.cxx:427
 AliEMCALHistoUtilities.cxx:428
 AliEMCALHistoUtilities.cxx:429
 AliEMCALHistoUtilities.cxx:430
 AliEMCALHistoUtilities.cxx:431
 AliEMCALHistoUtilities.cxx:432
 AliEMCALHistoUtilities.cxx:433
 AliEMCALHistoUtilities.cxx:434
 AliEMCALHistoUtilities.cxx:435
 AliEMCALHistoUtilities.cxx:436
 AliEMCALHistoUtilities.cxx:437
 AliEMCALHistoUtilities.cxx:438
 AliEMCALHistoUtilities.cxx:439
 AliEMCALHistoUtilities.cxx:440
 AliEMCALHistoUtilities.cxx:441
 AliEMCALHistoUtilities.cxx:442
 AliEMCALHistoUtilities.cxx:443
 AliEMCALHistoUtilities.cxx:444
 AliEMCALHistoUtilities.cxx:445
 AliEMCALHistoUtilities.cxx:446
 AliEMCALHistoUtilities.cxx:447
 AliEMCALHistoUtilities.cxx:448
 AliEMCALHistoUtilities.cxx:449
 AliEMCALHistoUtilities.cxx:450
 AliEMCALHistoUtilities.cxx:451
 AliEMCALHistoUtilities.cxx:452
 AliEMCALHistoUtilities.cxx:453
 AliEMCALHistoUtilities.cxx:454
 AliEMCALHistoUtilities.cxx:455
 AliEMCALHistoUtilities.cxx:456
 AliEMCALHistoUtilities.cxx:457
 AliEMCALHistoUtilities.cxx:458
 AliEMCALHistoUtilities.cxx:459
 AliEMCALHistoUtilities.cxx:460
 AliEMCALHistoUtilities.cxx:461
 AliEMCALHistoUtilities.cxx:462
 AliEMCALHistoUtilities.cxx:463
 AliEMCALHistoUtilities.cxx:464
 AliEMCALHistoUtilities.cxx:465
 AliEMCALHistoUtilities.cxx:466
 AliEMCALHistoUtilities.cxx:467
 AliEMCALHistoUtilities.cxx:468
 AliEMCALHistoUtilities.cxx:469
 AliEMCALHistoUtilities.cxx:470
 AliEMCALHistoUtilities.cxx:471
 AliEMCALHistoUtilities.cxx:472
 AliEMCALHistoUtilities.cxx:473
 AliEMCALHistoUtilities.cxx:474
 AliEMCALHistoUtilities.cxx:475
 AliEMCALHistoUtilities.cxx:476
 AliEMCALHistoUtilities.cxx:477
 AliEMCALHistoUtilities.cxx:478
 AliEMCALHistoUtilities.cxx:479
 AliEMCALHistoUtilities.cxx:480
 AliEMCALHistoUtilities.cxx:481
 AliEMCALHistoUtilities.cxx:482
 AliEMCALHistoUtilities.cxx:483
 AliEMCALHistoUtilities.cxx:484
 AliEMCALHistoUtilities.cxx:485
 AliEMCALHistoUtilities.cxx:486
 AliEMCALHistoUtilities.cxx:487
 AliEMCALHistoUtilities.cxx:488
 AliEMCALHistoUtilities.cxx:489
 AliEMCALHistoUtilities.cxx:490
 AliEMCALHistoUtilities.cxx:491
 AliEMCALHistoUtilities.cxx:492
 AliEMCALHistoUtilities.cxx:493
 AliEMCALHistoUtilities.cxx:494
 AliEMCALHistoUtilities.cxx:495
 AliEMCALHistoUtilities.cxx:496
 AliEMCALHistoUtilities.cxx:497
 AliEMCALHistoUtilities.cxx:498
 AliEMCALHistoUtilities.cxx:499
 AliEMCALHistoUtilities.cxx:500
 AliEMCALHistoUtilities.cxx:501
 AliEMCALHistoUtilities.cxx:502
 AliEMCALHistoUtilities.cxx:503
 AliEMCALHistoUtilities.cxx:504
 AliEMCALHistoUtilities.cxx:505
 AliEMCALHistoUtilities.cxx:506
 AliEMCALHistoUtilities.cxx:507
 AliEMCALHistoUtilities.cxx:508
 AliEMCALHistoUtilities.cxx:509
 AliEMCALHistoUtilities.cxx:510
 AliEMCALHistoUtilities.cxx:511
 AliEMCALHistoUtilities.cxx:512
 AliEMCALHistoUtilities.cxx:513
 AliEMCALHistoUtilities.cxx:514
 AliEMCALHistoUtilities.cxx:515
 AliEMCALHistoUtilities.cxx:516
 AliEMCALHistoUtilities.cxx:517
 AliEMCALHistoUtilities.cxx:518
 AliEMCALHistoUtilities.cxx:519
 AliEMCALHistoUtilities.cxx:520
 AliEMCALHistoUtilities.cxx:521
 AliEMCALHistoUtilities.cxx:522
 AliEMCALHistoUtilities.cxx:523
 AliEMCALHistoUtilities.cxx:524
 AliEMCALHistoUtilities.cxx:525
 AliEMCALHistoUtilities.cxx:526
 AliEMCALHistoUtilities.cxx:527
 AliEMCALHistoUtilities.cxx:528
 AliEMCALHistoUtilities.cxx:529
 AliEMCALHistoUtilities.cxx:530
 AliEMCALHistoUtilities.cxx:531
 AliEMCALHistoUtilities.cxx:532
 AliEMCALHistoUtilities.cxx:533
 AliEMCALHistoUtilities.cxx:534
 AliEMCALHistoUtilities.cxx:535
 AliEMCALHistoUtilities.cxx:536
 AliEMCALHistoUtilities.cxx:537
 AliEMCALHistoUtilities.cxx:538
 AliEMCALHistoUtilities.cxx:539
 AliEMCALHistoUtilities.cxx:540
 AliEMCALHistoUtilities.cxx:541
 AliEMCALHistoUtilities.cxx:542
 AliEMCALHistoUtilities.cxx:543
 AliEMCALHistoUtilities.cxx:544
 AliEMCALHistoUtilities.cxx:545
 AliEMCALHistoUtilities.cxx:546
 AliEMCALHistoUtilities.cxx:547
 AliEMCALHistoUtilities.cxx:548
 AliEMCALHistoUtilities.cxx:549
 AliEMCALHistoUtilities.cxx:550
 AliEMCALHistoUtilities.cxx:551
 AliEMCALHistoUtilities.cxx:552
 AliEMCALHistoUtilities.cxx:553
 AliEMCALHistoUtilities.cxx:554
 AliEMCALHistoUtilities.cxx:555
 AliEMCALHistoUtilities.cxx:556
 AliEMCALHistoUtilities.cxx:557
 AliEMCALHistoUtilities.cxx:558
 AliEMCALHistoUtilities.cxx:559
 AliEMCALHistoUtilities.cxx:560
 AliEMCALHistoUtilities.cxx:561
 AliEMCALHistoUtilities.cxx:562
 AliEMCALHistoUtilities.cxx:563
 AliEMCALHistoUtilities.cxx:564
 AliEMCALHistoUtilities.cxx:565
 AliEMCALHistoUtilities.cxx:566
 AliEMCALHistoUtilities.cxx:567
 AliEMCALHistoUtilities.cxx:568
 AliEMCALHistoUtilities.cxx:569
 AliEMCALHistoUtilities.cxx:570
 AliEMCALHistoUtilities.cxx:571
 AliEMCALHistoUtilities.cxx:572
 AliEMCALHistoUtilities.cxx:573
 AliEMCALHistoUtilities.cxx:574
 AliEMCALHistoUtilities.cxx:575
 AliEMCALHistoUtilities.cxx:576
 AliEMCALHistoUtilities.cxx:577
 AliEMCALHistoUtilities.cxx:578
 AliEMCALHistoUtilities.cxx:579
 AliEMCALHistoUtilities.cxx:580
 AliEMCALHistoUtilities.cxx:581
 AliEMCALHistoUtilities.cxx:582
 AliEMCALHistoUtilities.cxx:583
 AliEMCALHistoUtilities.cxx:584
 AliEMCALHistoUtilities.cxx:585
 AliEMCALHistoUtilities.cxx:586
 AliEMCALHistoUtilities.cxx:587
 AliEMCALHistoUtilities.cxx:588
 AliEMCALHistoUtilities.cxx:589
 AliEMCALHistoUtilities.cxx:590
 AliEMCALHistoUtilities.cxx:591
 AliEMCALHistoUtilities.cxx:592
 AliEMCALHistoUtilities.cxx:593
 AliEMCALHistoUtilities.cxx:594
 AliEMCALHistoUtilities.cxx:595
 AliEMCALHistoUtilities.cxx:596
 AliEMCALHistoUtilities.cxx:597
 AliEMCALHistoUtilities.cxx:598
 AliEMCALHistoUtilities.cxx:599
 AliEMCALHistoUtilities.cxx:600
 AliEMCALHistoUtilities.cxx:601
 AliEMCALHistoUtilities.cxx:602
 AliEMCALHistoUtilities.cxx:603
 AliEMCALHistoUtilities.cxx:604
 AliEMCALHistoUtilities.cxx:605
 AliEMCALHistoUtilities.cxx:606
 AliEMCALHistoUtilities.cxx:607
 AliEMCALHistoUtilities.cxx:608
 AliEMCALHistoUtilities.cxx:609
 AliEMCALHistoUtilities.cxx:610
 AliEMCALHistoUtilities.cxx:611
 AliEMCALHistoUtilities.cxx:612
 AliEMCALHistoUtilities.cxx:613
 AliEMCALHistoUtilities.cxx:614
 AliEMCALHistoUtilities.cxx:615
 AliEMCALHistoUtilities.cxx:616
 AliEMCALHistoUtilities.cxx:617
 AliEMCALHistoUtilities.cxx:618
 AliEMCALHistoUtilities.cxx:619
 AliEMCALHistoUtilities.cxx:620
 AliEMCALHistoUtilities.cxx:621
 AliEMCALHistoUtilities.cxx:622
 AliEMCALHistoUtilities.cxx:623
 AliEMCALHistoUtilities.cxx:624
 AliEMCALHistoUtilities.cxx:625
 AliEMCALHistoUtilities.cxx:626
 AliEMCALHistoUtilities.cxx:627
 AliEMCALHistoUtilities.cxx:628
 AliEMCALHistoUtilities.cxx:629
 AliEMCALHistoUtilities.cxx:630
 AliEMCALHistoUtilities.cxx:631
 AliEMCALHistoUtilities.cxx:632
 AliEMCALHistoUtilities.cxx:633
 AliEMCALHistoUtilities.cxx:634
 AliEMCALHistoUtilities.cxx:635
 AliEMCALHistoUtilities.cxx:636
 AliEMCALHistoUtilities.cxx:637
 AliEMCALHistoUtilities.cxx:638
 AliEMCALHistoUtilities.cxx:639
 AliEMCALHistoUtilities.cxx:640
 AliEMCALHistoUtilities.cxx:641
 AliEMCALHistoUtilities.cxx:642
 AliEMCALHistoUtilities.cxx:643
 AliEMCALHistoUtilities.cxx:644
 AliEMCALHistoUtilities.cxx:645
 AliEMCALHistoUtilities.cxx:646
 AliEMCALHistoUtilities.cxx:647
 AliEMCALHistoUtilities.cxx:648
 AliEMCALHistoUtilities.cxx:649
 AliEMCALHistoUtilities.cxx:650
 AliEMCALHistoUtilities.cxx:651
 AliEMCALHistoUtilities.cxx:652
 AliEMCALHistoUtilities.cxx:653
 AliEMCALHistoUtilities.cxx:654
 AliEMCALHistoUtilities.cxx:655
 AliEMCALHistoUtilities.cxx:656
 AliEMCALHistoUtilities.cxx:657
 AliEMCALHistoUtilities.cxx:658
 AliEMCALHistoUtilities.cxx:659
 AliEMCALHistoUtilities.cxx:660
 AliEMCALHistoUtilities.cxx:661
 AliEMCALHistoUtilities.cxx:662
 AliEMCALHistoUtilities.cxx:663
 AliEMCALHistoUtilities.cxx:664
 AliEMCALHistoUtilities.cxx:665
 AliEMCALHistoUtilities.cxx:666
 AliEMCALHistoUtilities.cxx:667
 AliEMCALHistoUtilities.cxx:668
 AliEMCALHistoUtilities.cxx:669
 AliEMCALHistoUtilities.cxx:670
 AliEMCALHistoUtilities.cxx:671
 AliEMCALHistoUtilities.cxx:672
 AliEMCALHistoUtilities.cxx:673
 AliEMCALHistoUtilities.cxx:674
 AliEMCALHistoUtilities.cxx:675
 AliEMCALHistoUtilities.cxx:676
 AliEMCALHistoUtilities.cxx:677
 AliEMCALHistoUtilities.cxx:678
 AliEMCALHistoUtilities.cxx:679
 AliEMCALHistoUtilities.cxx:680
 AliEMCALHistoUtilities.cxx:681
 AliEMCALHistoUtilities.cxx:682
 AliEMCALHistoUtilities.cxx:683
 AliEMCALHistoUtilities.cxx:684
 AliEMCALHistoUtilities.cxx:685
 AliEMCALHistoUtilities.cxx:686
 AliEMCALHistoUtilities.cxx:687
 AliEMCALHistoUtilities.cxx:688
 AliEMCALHistoUtilities.cxx:689
 AliEMCALHistoUtilities.cxx:690
 AliEMCALHistoUtilities.cxx:691
 AliEMCALHistoUtilities.cxx:692
 AliEMCALHistoUtilities.cxx:693
 AliEMCALHistoUtilities.cxx:694
 AliEMCALHistoUtilities.cxx:695
 AliEMCALHistoUtilities.cxx:696
 AliEMCALHistoUtilities.cxx:697
 AliEMCALHistoUtilities.cxx:698
 AliEMCALHistoUtilities.cxx:699
 AliEMCALHistoUtilities.cxx:700
 AliEMCALHistoUtilities.cxx:701
 AliEMCALHistoUtilities.cxx:702
 AliEMCALHistoUtilities.cxx:703
 AliEMCALHistoUtilities.cxx:704
 AliEMCALHistoUtilities.cxx:705
 AliEMCALHistoUtilities.cxx:706
 AliEMCALHistoUtilities.cxx:707
 AliEMCALHistoUtilities.cxx:708
 AliEMCALHistoUtilities.cxx:709
 AliEMCALHistoUtilities.cxx:710
 AliEMCALHistoUtilities.cxx:711
 AliEMCALHistoUtilities.cxx:712
 AliEMCALHistoUtilities.cxx:713
 AliEMCALHistoUtilities.cxx:714
 AliEMCALHistoUtilities.cxx:715
 AliEMCALHistoUtilities.cxx:716
 AliEMCALHistoUtilities.cxx:717
 AliEMCALHistoUtilities.cxx:718
 AliEMCALHistoUtilities.cxx:719
 AliEMCALHistoUtilities.cxx:720
 AliEMCALHistoUtilities.cxx:721
 AliEMCALHistoUtilities.cxx:722
 AliEMCALHistoUtilities.cxx:723
 AliEMCALHistoUtilities.cxx:724
 AliEMCALHistoUtilities.cxx:725
 AliEMCALHistoUtilities.cxx:726
 AliEMCALHistoUtilities.cxx:727
 AliEMCALHistoUtilities.cxx:728
 AliEMCALHistoUtilities.cxx:729
 AliEMCALHistoUtilities.cxx:730
 AliEMCALHistoUtilities.cxx:731
 AliEMCALHistoUtilities.cxx:732
 AliEMCALHistoUtilities.cxx:733
 AliEMCALHistoUtilities.cxx:734
 AliEMCALHistoUtilities.cxx:735
 AliEMCALHistoUtilities.cxx:736
 AliEMCALHistoUtilities.cxx:737
 AliEMCALHistoUtilities.cxx:738
 AliEMCALHistoUtilities.cxx:739
 AliEMCALHistoUtilities.cxx:740
 AliEMCALHistoUtilities.cxx:741
 AliEMCALHistoUtilities.cxx:742
 AliEMCALHistoUtilities.cxx:743
 AliEMCALHistoUtilities.cxx:744
 AliEMCALHistoUtilities.cxx:745
 AliEMCALHistoUtilities.cxx:746
 AliEMCALHistoUtilities.cxx:747
 AliEMCALHistoUtilities.cxx:748
 AliEMCALHistoUtilities.cxx:749
 AliEMCALHistoUtilities.cxx:750
 AliEMCALHistoUtilities.cxx:751
 AliEMCALHistoUtilities.cxx:752
 AliEMCALHistoUtilities.cxx:753
 AliEMCALHistoUtilities.cxx:754
 AliEMCALHistoUtilities.cxx:755
 AliEMCALHistoUtilities.cxx:756
 AliEMCALHistoUtilities.cxx:757
 AliEMCALHistoUtilities.cxx:758
 AliEMCALHistoUtilities.cxx:759
 AliEMCALHistoUtilities.cxx:760
 AliEMCALHistoUtilities.cxx:761
 AliEMCALHistoUtilities.cxx:762
 AliEMCALHistoUtilities.cxx:763
 AliEMCALHistoUtilities.cxx:764
 AliEMCALHistoUtilities.cxx:765
 AliEMCALHistoUtilities.cxx:766
 AliEMCALHistoUtilities.cxx:767
 AliEMCALHistoUtilities.cxx:768
 AliEMCALHistoUtilities.cxx:769
 AliEMCALHistoUtilities.cxx:770
 AliEMCALHistoUtilities.cxx:771
 AliEMCALHistoUtilities.cxx:772
 AliEMCALHistoUtilities.cxx:773
 AliEMCALHistoUtilities.cxx:774
 AliEMCALHistoUtilities.cxx:775
 AliEMCALHistoUtilities.cxx:776
 AliEMCALHistoUtilities.cxx:777
 AliEMCALHistoUtilities.cxx:778
 AliEMCALHistoUtilities.cxx:779
 AliEMCALHistoUtilities.cxx:780
 AliEMCALHistoUtilities.cxx:781
 AliEMCALHistoUtilities.cxx:782
 AliEMCALHistoUtilities.cxx:783
 AliEMCALHistoUtilities.cxx:784
 AliEMCALHistoUtilities.cxx:785
 AliEMCALHistoUtilities.cxx:786
 AliEMCALHistoUtilities.cxx:787
 AliEMCALHistoUtilities.cxx:788
 AliEMCALHistoUtilities.cxx:789
 AliEMCALHistoUtilities.cxx:790
 AliEMCALHistoUtilities.cxx:791
 AliEMCALHistoUtilities.cxx:792
 AliEMCALHistoUtilities.cxx:793
 AliEMCALHistoUtilities.cxx:794
 AliEMCALHistoUtilities.cxx:795
 AliEMCALHistoUtilities.cxx:796
 AliEMCALHistoUtilities.cxx:797
 AliEMCALHistoUtilities.cxx:798
 AliEMCALHistoUtilities.cxx:799
 AliEMCALHistoUtilities.cxx:800
 AliEMCALHistoUtilities.cxx:801
 AliEMCALHistoUtilities.cxx:802
 AliEMCALHistoUtilities.cxx:803
 AliEMCALHistoUtilities.cxx:804
 AliEMCALHistoUtilities.cxx:805
 AliEMCALHistoUtilities.cxx:806
 AliEMCALHistoUtilities.cxx:807
 AliEMCALHistoUtilities.cxx:808
 AliEMCALHistoUtilities.cxx:809
 AliEMCALHistoUtilities.cxx:810
 AliEMCALHistoUtilities.cxx:811
 AliEMCALHistoUtilities.cxx:812
 AliEMCALHistoUtilities.cxx:813
 AliEMCALHistoUtilities.cxx:814
 AliEMCALHistoUtilities.cxx:815
 AliEMCALHistoUtilities.cxx:816
 AliEMCALHistoUtilities.cxx:817
 AliEMCALHistoUtilities.cxx:818
 AliEMCALHistoUtilities.cxx:819
 AliEMCALHistoUtilities.cxx:820
 AliEMCALHistoUtilities.cxx:821
 AliEMCALHistoUtilities.cxx:822
 AliEMCALHistoUtilities.cxx:823
 AliEMCALHistoUtilities.cxx:824
 AliEMCALHistoUtilities.cxx:825
 AliEMCALHistoUtilities.cxx:826
 AliEMCALHistoUtilities.cxx:827
 AliEMCALHistoUtilities.cxx:828
 AliEMCALHistoUtilities.cxx:829
 AliEMCALHistoUtilities.cxx:830
 AliEMCALHistoUtilities.cxx:831
 AliEMCALHistoUtilities.cxx:832
 AliEMCALHistoUtilities.cxx:833
 AliEMCALHistoUtilities.cxx:834
 AliEMCALHistoUtilities.cxx:835
 AliEMCALHistoUtilities.cxx:836
 AliEMCALHistoUtilities.cxx:837
 AliEMCALHistoUtilities.cxx:838
 AliEMCALHistoUtilities.cxx:839
 AliEMCALHistoUtilities.cxx:840
 AliEMCALHistoUtilities.cxx:841
 AliEMCALHistoUtilities.cxx:842
 AliEMCALHistoUtilities.cxx:843