ROOT logo
/**************************************************************************
 * Author: Panos Christakoglou.                                           *
 * 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.                  *
 **************************************************************************/

//-----------------------------------------------------------------
//           Balance Function class
//   This is the class to deal with the Balance Function analysis
//   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//   Modified: Michael Weber, m.weber@cern.ch
//-----------------------------------------------------------------


//ROOT
#include <Riostream.h>
#include <TMath.h>
#include <TAxis.h>
#include <TH1D.h>
#include <TH2D.h>


#include <AliTHn.h>
#include <TLorentzVector.h>
#include <TObjArray.h>
#include <TGraphErrors.h>
#include <TString.h>

#include "AliVParticle.h"
#include "AliMCParticle.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"

#include "AliBalanceTriggered.h"

ClassImp(AliBalanceTriggered)

//____________________________________________________________________//
AliBalanceTriggered::AliBalanceTriggered() :
  TObject(), 
  fAnalysisLevel("AOD"),
  fHistP(0x0),
  fHistN(0x0),
  fHistPN(0x0),
  fHistNP(0x0),
  fHistPP(0x0),
  fHistNN(0x0)
{
  // Default constructor
 
}


//____________________________________________________________________//
AliBalanceTriggered::AliBalanceTriggered(const AliBalanceTriggered& balance):
  TObject(balance), 
  fAnalysisLevel(balance.fAnalysisLevel),
  fHistP(balance.fHistP),
  fHistN(balance.fHistN),
  fHistPN(balance.fHistPN),
  fHistNP(balance.fHistNP),
  fHistPP(balance.fHistPP),
  fHistNN(balance.fHistNN)
{
  //copy constructor

}

//____________________________________________________________________//
AliBalanceTriggered::~AliBalanceTriggered() {
  // Destructor
 
  delete fHistP;
  delete fHistN;
  delete fHistPN;
  delete fHistNP;
  delete fHistPP;
  delete fHistNN;
  

}

//____________________________________________________________________//
void AliBalanceTriggered::InitHistograms() {
  //Initialize the histograms

  // global switch disabling the reference 
  // (to avoid "Replacing existing TH1" if several wagons are created in train)
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);

  TString title    = "";      // histogram title
  Int_t anaSteps   = 1;       // analysis steps

  // single particle histograms
  Int_t iBinSingle[kTrackVarsSingle];         // binning for track variables
  Double_t* dBinsSingle[kTrackVarsSingle];    // bins for track variables  
  TString axisTitleSingle[kTrackVarsSingle];  // axis titles for track variables
  
  // two particle histograms
  Int_t iBinPair[kTrackVarsPair];         // binning for track variables
  Double_t* dBinsPair[kTrackVarsPair];    // bins for track variables  
  TString axisTitlePair[kTrackVarsPair];  // axis titles for track variables

   
  //-----------------------------------------------------------
  // histogram settings (hard coded!)
  //-----------------------------------------------------------

  // eta
  const Int_t kNEtaBins = 40;
  Double_t etaBins[kNEtaBins+1];
  for(Int_t i = 0; i < kNEtaBins+1; i++){
    etaBins[i] = -1.0 + i * 0.05;
  } 
  iBinSingle[0]       = kNEtaBins;
  dBinsSingle[0]      = etaBins;
  axisTitleSingle[0]  = "#eta"; 
  
  // delta eta
  const Int_t kNDeltaEtaBins = 40;
  Double_t deltaEtaBins[kNDeltaEtaBins+1];
  for(Int_t i = 0; i < kNDeltaEtaBins+1; i++){
    deltaEtaBins[i] = -2.0 + i * 0.1;
  } 
  iBinPair[0]       = kNDeltaEtaBins;
  dBinsPair[0]      = deltaEtaBins;
  axisTitlePair[0]  = "#Delta #eta"; 

  // phi
  const Int_t kNPhiBins = 72;
  Double_t phiBins[kNPhiBins+1];
  for(Int_t i = 0; i < kNPhiBins+1; i++){
    phiBins[i] = 0.0 + i * 5.;
  } 
  iBinSingle[1]       = kNPhiBins;
  dBinsSingle[1]      = phiBins;
  axisTitleSingle[1]  = "#phi (#circ)"; 
  
  // delta phi
  const Int_t kNDeltaPhiBins = 72;
  Double_t deltaPhiBins[kNDeltaPhiBins+1];
  for(Int_t i = 0; i < kNDeltaPhiBins+1; i++){
    deltaPhiBins[i] = -180.0 + i * 5.;
  } 
  iBinPair[1]       = kNDeltaPhiBins;
  dBinsPair[1]      = deltaPhiBins;
  axisTitlePair[1]  = "#Delta #phi (#circ)"; 

  // pT
  const Int_t kNPtBins = 22;
  Double_t pTBins[kNPtBins+1] = {0.15, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 15.0, 20.0};
  iBinSingle[2]       = kNPtBins;
  dBinsSingle[2]      = pTBins;
  axisTitleSingle[2]  = "p_{T,trig} (GeV/c)";
 
  iBinPair[2]       = kNPtBins;
  dBinsPair[2]      = pTBins;
  axisTitlePair[2]  = "p_{T} (GeV/c)";
 
  iBinPair[3]       = kNPtBins;
  dBinsPair[3]      = pTBins;
  axisTitlePair[3]  = "p_{T,trig} (GeV/c)"; 

  // centrality
  const Int_t kNCentBins = 9;
  Double_t centBins[kNCentBins+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.};

  iBinSingle[3]       = kNCentBins;
  dBinsSingle[3]      = centBins;
  axisTitleSingle[3]  = "centrality"; 

  iBinPair[4]       = kNCentBins;
  dBinsPair[4]      = centBins;
  axisTitlePair[4]  = "centrality";

  //-----------------------------------------------------------
  


  // User settings (depending on the analysis settings [only one at the moment])
  if(fAnalysisLevel == "AOD"){
    title = "hdEtaVsdPhi";
  }

  //-----------------------------------------------------------
  //-----------------------------------------------------------
  // Histogram creation

  // histogram for negative particles
  fHistN = new AliTHn(Form("fHistN"), Form("%s_N",title.Data()), anaSteps, kTrackVarsSingle, iBinSingle);
  for (Int_t j=0; j<kTrackVarsSingle; j++)
    {
      fHistN->SetBinLimits(j, dBinsSingle[j]);
      fHistN->SetVarTitle(j, axisTitleSingle[j]);
    }

  // histogram for positive particles
  fHistP = new AliTHn(Form("fHistP"), Form("%s_P",title.Data()), anaSteps, kTrackVarsSingle, iBinSingle);
  for (Int_t j=0; j<kTrackVarsSingle; j++)
    {
      fHistP->SetBinLimits(j, dBinsSingle[j]);
      fHistP->SetVarTitle(j, axisTitleSingle[j]);
    }

  // histogram for +- pairs
  fHistPN = new AliTHn(Form("fHistPN"), Form("%s_PN",title.Data()), anaSteps, kTrackVarsPair, iBinPair);
  for (Int_t j=0; j<kTrackVarsPair; j++)
    {
      fHistPN->SetBinLimits(j, dBinsPair[j]);
      fHistPN->SetVarTitle(j, axisTitlePair[j]);
    }

  // histogram for -+ pairs
  fHistNP = new AliTHn(Form("fHistNP"), Form("%s_NP",title.Data()), anaSteps, kTrackVarsPair, iBinPair);
  for (Int_t j=0; j<kTrackVarsPair; j++)
    {
      fHistNP->SetBinLimits(j, dBinsPair[j]);
      fHistNP->SetVarTitle(j, axisTitlePair[j]);
    }

  // histogram for ++ pairs
  fHistPP = new AliTHn(Form("fHistPP"), Form("%s_PP",title.Data()), anaSteps, kTrackVarsPair, iBinPair);
  for (Int_t j=0; j<kTrackVarsPair; j++)
    {
      fHistPP->SetBinLimits(j, dBinsPair[j]);
      fHistPP->SetVarTitle(j, axisTitlePair[j]);
    }

  // histogram for -- pairs
  fHistNN = new AliTHn(Form("fHistNN"), Form("%s_NN",title.Data()), anaSteps, kTrackVarsPair, iBinPair);
  for (Int_t j=0; j<kTrackVarsPair; j++)
    {
      fHistNN->SetBinLimits(j, dBinsPair[j]);
      fHistNN->SetVarTitle(j, axisTitlePair[j]);
    }

  //-----------------------------------------------------------
  //-----------------------------------------------------------

  TH1::AddDirectory(oldStatus);

}

//____________________________________________________________________//
void AliBalanceTriggered::FillBalance(Float_t fCentrality,TObjArray *particles, TObjArray *particlesMixed) {
  // Calculates the balance function

 
  // Initialize histograms if not done yet
  if(!fHistPN){
    AliWarning("Histograms not yet initialized! --> Will be done now");
    AliWarning("This works only in local mode --> Add 'gBalance->InitHistograms()' in your configBalanceFunction");
    InitHistograms();
  }

  Double_t trackVarsSingle[kTrackVarsSingle];
  Double_t trackVarsPair[kTrackVarsPair];

  if (!particles){
    AliWarning("particles TObjArray is NULL pointer --> return");
    return;
  }
  
  // define end of particle loops
  Int_t iMax = particles->GetEntriesFast();
  Int_t jMax = iMax;
  if (particlesMixed)
    jMax = particlesMixed->GetEntriesFast();

  // Eta() is extremely time consuming, therefore cache it for the inner loop here:
  TObjArray* particlesSecond = (particlesMixed) ? particlesMixed : particles;

  TArrayF secondEta(jMax);
  TArrayF secondPhi(jMax);
  TArrayF secondPt(jMax);

  for (Int_t i=0; i<jMax; i++){
    secondEta[i] = ((AliVParticle*) particlesSecond->At(i))->Eta();
    secondPhi[i] = ((AliVParticle*) particlesSecond->At(i))->Phi();
    secondPt[i]  = ((AliVParticle*) particlesSecond->At(i))->Pt();
  }
  
  // 1st particle loop
  for (Int_t i=0; i<iMax; i++)
    {
      
      AliVParticle* firstParticle = (AliVParticle*) particles->At(i);

      // some optimization
      Float_t firstEta = firstParticle->Eta();
      Float_t firstPhi = firstParticle->Phi();
      Float_t firstPt  = firstParticle->Pt();

      
      Short_t  charge = (Short_t) firstParticle->Charge();
      trackVarsSingle[0]    =  firstEta;    //eta
      trackVarsSingle[1]    =  firstPhi;    //phi
      trackVarsSingle[2]    =  firstPt;     //pt trigger
      trackVarsSingle[3]    =  fCentrality; //centrality 
      
      //fill single particle histograms
      if(charge > 0)  fHistP->Fill(trackVarsSingle,0,1.); 
      else            fHistN->Fill(trackVarsSingle,0,1.);  

      
      // 2nd particle loop (only for j < i for non double counting in the same pT region)
      // --> SAME pT region for trigger and assoc: NO double counting with this
      // --> DIFF pT region for trigger and assoc: Missing assoc. particles with j > i to a trigger i 
      //                          --> can be handled afterwards by using assoc. as trigger as well ?!     
      for(Int_t j = 0; j < i; j++) {   // or go to full here (everything prepared)?
	
	if (particlesMixed && jMax < i)  // if the mixed track number is smaller than the main event one (could be done better if one loops over all tracks)
	  break;

	AliVParticle* secondParticle = (AliVParticle*) particlesSecond->At(j);

	Short_t charge2 = (Short_t) secondParticle->Charge();
	trackVarsPair[0]    =  firstEta - secondEta[j];  // delta eta
	trackVarsPair[1]    =  firstPhi - secondPhi[j];  // delta phi
	if (trackVarsPair[1] > 180)   // delta phi between -180 and 180 
	  trackVarsPair[1] -= 360;
	if (trackVarsPair[1] <  - 180) 
	  trackVarsPair[1] += 360;
	
	trackVarsPair[2]    =  firstPt;      // pt trigger
	trackVarsPair[3]    =  secondPt[j];  // pt
	trackVarsPair[4]    =  fCentrality;  // centrality
	
	if( charge > 0 && charge2 < 0)  fHistPN->Fill(trackVarsPair,0,1.); 
	else if( charge < 0 && charge2 > 0)  fHistNP->Fill(trackVarsPair,0,1.); 
	else if( charge > 0 && charge2 > 0)  fHistPP->Fill(trackVarsPair,0,1.); 
	else if( charge < 0 && charge2 < 0)  fHistNN->Fill(trackVarsPair,0,1.); 
	else AliWarning("Wrong charge combination!");
	
      }//end of 2nd particle loop
    }//end of 1st particle loop
}  


TH1D* AliBalanceTriggered::GetBalanceFunctionHistogram1D(Int_t var, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax, Double_t etaGap){

  // check which variable should be analyzed
  // 0 = Delta eta
  // 1 = Delta phi

  if( var < 0 || var > 1){
    AliError("Only Variable 0 (= Delta eta) or 1 (= Delta phi) allowed");
    return NULL;
  }


  // Choose region to analyze 
  // for Single Histograms (P,N):       2 = pT,trigger; 3 = centrality
  // for Pair Histograms (PN,NP,NN,PP): 2 = pT; 3 = pT,trigger; 4 = centrality

  // pT trigger
  fHistP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistPN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistNP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistPP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistNN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 

  // pT
  fHistPN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
  fHistNP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
  fHistPP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
  fHistNN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 

  // centrality
  fHistP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(centrMin,centrMax); 
  fHistN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(centrMin,centrMax); 
  fHistPN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  fHistNP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  fHistPP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  fHistNN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 

  if (etaGap > 0){
    fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 
    fHistN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 
    fHistPN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 
    fHistNP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 
    fHistPP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 
    fHistNN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 
  }  

  // Project into the wanted space (1st: analysis step, 2nd: axis)
  TH1D* hTemp1 = (TH1D*)fHistPN->Project(0,var);
  TH1D* hTemp2 = (TH1D*)fHistNP->Project(0,var);
  TH1D* hTemp3 = (TH1D*)fHistPP->Project(0,var);
  TH1D* hTemp4 = (TH1D*)fHistNN->Project(0,var);
  TH1D* hTemp5 = (TH1D*)fHistP->Project(0,var);
  TH1D* hTemp6 = (TH1D*)fHistN->Project(0,var);

  if (etaGap > 0){
    fHistP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 
    fHistN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 
    fHistPN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 
    fHistNP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 
    fHistPP->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 
    fHistNN->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 
  }

  TH1D* gHistBalanceFunctionHistogram = NULL;

  // Calculate BF
  if((hTemp1)&&(hTemp2)&&(hTemp3)&&(hTemp4)&&(hTemp5)&&(hTemp6)) {
    
    gHistBalanceFunctionHistogram = (TH1D*)hTemp1->Clone();
    gHistBalanceFunctionHistogram->Reset();

    // Calculate BF
    hTemp1->Add(hTemp3,-1.);
    hTemp1->Scale(1./hTemp5->GetEntries());
    hTemp2->Add(hTemp4,-1.);
    hTemp2->Scale(1./hTemp6->GetEntries());
    gHistBalanceFunctionHistogram->Add(hTemp1,hTemp2,1.,1.);
    gHistBalanceFunctionHistogram->Scale(0.5/1.);
  }

  return gHistBalanceFunctionHistogram;
}

TH2D* AliBalanceTriggered::GetBalanceFunctionHistogram2D(Int_t var1, Int_t var2, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax){

  // check which variable should be analyzed
  // 0 = Delta eta
  // 1 = Delta phi

  if( var1 < 0 || var1 > 1 || var2 < 0 || var2 > 1){
    AliError("Only Variable 0 (= Delta eta) or 1 (= Delta phi) allowed");
    return NULL;
  }


  // Choose region to analyze 
  // for Single Histograms (P,N):       2 = pT,trigger; 3 = centrality
  // for Pair Histograms (PN,NP,NN,PP): 2 = pT; 3 = pT,trigger; 4 = centrality

  // pT trigger
  fHistP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistPN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistNP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistPP->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
  fHistNN->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 

  // pT
  fHistPN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
  fHistNP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
  fHistPP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
  fHistNN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 

  // centrality
  fHistP->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(centrMin,centrMax); 
  fHistN->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(centrMin,centrMax); 
  fHistPN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  fHistNP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  fHistPP->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  fHistNN->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
  

  // Project into the wanted space (1st: analysis step, 2nd: axis1, 3rd: axis2)
  TH2D* hTemp1 = (TH2D*)fHistPN->Project(0,var1,var2);
  TH2D* hTemp2 = (TH2D*)fHistNP->Project(0,var1,var2);
  TH2D* hTemp3 = (TH2D*)fHistPP->Project(0,var1,var2);
  TH2D* hTemp4 = (TH2D*)fHistNN->Project(0,var1,var2);
  TH2D* hTemp5 = (TH2D*)fHistP->Project(0,var1,var2);
  TH2D* hTemp6 = (TH2D*)fHistN->Project(0,var1,var2);

  TH2D* gHistBalanceFunctionHistogram = NULL;

  // Calculate BF
  if((hTemp1)&&(hTemp2)&&(hTemp3)&&(hTemp4)&&(hTemp5)&&(hTemp6)) {
    
    gHistBalanceFunctionHistogram = (TH2D*)hTemp1->Clone();
    gHistBalanceFunctionHistogram->Reset();
    
    // Calculate BF
    hTemp1->Add(hTemp3,-1.);
    hTemp1->Scale(1./hTemp5->GetEntries());
    hTemp2->Add(hTemp4,-1.);
    hTemp2->Scale(1./hTemp6->GetEntries());
    gHistBalanceFunctionHistogram->Add(hTemp1,hTemp2,1.,1.);
  }

  return gHistBalanceFunctionHistogram;
}


TH1D* AliBalanceTriggered::GetHistogram1D(Int_t histo, Int_t var, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax, Double_t etaGap){

  // check which variable should be analyzed
  //
  // single histograms:
  // 0 = eta 
  // 1 = phi
  // 2 = pT, trigger
  // 3 = centrality
  //
  // pair histograms:
  // 0 = Delta eta 
  // 1 = Delta phi
  // 2 = pT
  // 3 = pT, trigger
  // 4 = centrality

  if(histo < 0 || histo > 5){
    AliError("Only 6 histograms available: 0(P), 1(N), 2(PN), 3(NP), 4(PP), 5(NN)");
    return NULL;
  }

  if( histo > 1 && (var < 0 || var > 5)){
    AliError("Only Variable 0 to 4 allowed for pair histograms (histo > 1)");
    return NULL;
  }
  if( histo < 2 && (var < 0 || var > 4)){
    AliError("Only Variable 0 to 3 allowed for single histograms (histo < 2)");
    return NULL;
  }

  // get the histogram
  AliTHn *gTHn = NULL;
  switch(histo){
 
  case 0:
    gTHn = fHistP;
    break;

  case 1:
    gTHn = fHistN;
    break;

  case 2:
    gTHn = fHistPN;
    break;

  case 3:
    gTHn = fHistNP;
    break;

  case 4:
    gTHn = fHistPP;
    break;

  case 5:
    gTHn = fHistNN;
    break;
    
  }

  if(!gTHn){
    AliError(Form("AliTHn number %d = NULL",histo));
    return NULL;
  }

  // Choose region to analyze 
  // for Single Histograms (P,N):       2 = pT,trigger; 3 = centrality
  // for Pair Histograms (PN,NP,NN,PP): 2 = pT; 3 = pT,trigger; 4 = centrality

  // pT trigger
  gTHn->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
 
  // pT
  if(histo > 1) gTHn->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
 
  // centrality
  if(histo < 2) gTHn->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(centrMin,centrMax); 
  else          gTHn->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 

  if (etaGap > 0) gTHn->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(20 + etaGap, 9999); 

  // Project into the wanted space (1st: analysis step, 2nd: axis)
  TH1D* gHisto      = (TH1D*)gTHn->Project(0,var);


  gTHn->GetGrid(0)->GetGrid()->GetAxis(0)->SetRange(-9999, 9999); 


  return gHisto;
}


TH2D* AliBalanceTriggered::GetHistogram2D(Int_t histo, Int_t var1, Int_t var2, Double_t pTMinTrigger, Double_t pTMaxTrigger, Double_t pTMin, Double_t pTMax, Double_t centrMin, Double_t centrMax){

  // check which variable should be analyzed
  //
  // single histograms:
  // 0 = eta 
  // 1 = phi
  // 2 = pT, trigger
  // 3 = centrality
  //
  // pair histograms:
  // 0 = Delta eta 
  // 1 = Delta phi
  // 2 = pT
  // 3 = pT, trigger
  // 4 = centrality

  if(histo < 0 || histo > 5){
    AliError("Only 6 histograms available: 0(P), 1(N), 2(PN), 3(NP), 4(PP), 5(NN)");
    return NULL;
  }

  if( histo > 1 && (var1 < 0 || var1 > 5 || var2 < 0 || var2 > 5)){
    AliError("Only Variable 0 to 4 allowed for pair histograms (histo > 1)");
    return NULL;
  }
  if( histo < 2 && (var1 < 0 || var1 > 4 || var2 < 0 || var2 > 4)){
    AliError("Only Variable 0 to 3 allowed for single histograms (histo < 2)");
    return NULL;
  }

  // get the histogram
  AliTHn *gTHn = NULL;
  switch(histo){
 
  case 0:
    gTHn = fHistP;
    break;

  case 1:
    gTHn = fHistN;
    break;

  case 2:
    gTHn = fHistPN;
    break;

  case 3:
    gTHn = fHistNP;
    break;

  case 4:
    gTHn = fHistPP;
    break;

  case 5:
    gTHn = fHistNN;
    break;
    
  }

  if(!gTHn){
    AliError(Form("AliTHn number %d = NULL",histo));
    return NULL;
  }

  // Choose region to analyze 
  // for Single Histograms (P,N):       2 = pT,trigger; 3 = centrality
  // for Pair Histograms (PN,NP,NN,PP): 2 = pT; 3 = pT,trigger; 4 = centrality

  // pT trigger
  gTHn->GetGrid(0)->GetGrid()->GetAxis(2)->SetRange(pTMinTrigger,pTMaxTrigger); 
 
  // pT
  if(histo > 1) gTHn->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(pTMin,pTMax); 
 
  // centrality
  if(histo < 2) gTHn->GetGrid(0)->GetGrid()->GetAxis(3)->SetRange(centrMin,centrMax); 
  else          gTHn->GetGrid(0)->GetGrid()->GetAxis(4)->SetRange(centrMin,centrMax); 
 

  // Project into the wanted space (1st: analysis step, 2nd: axis)
  TH2D* gHisto = (TH2D*)gTHn->Project(0,var1,var2);

  return gHisto;
}
 AliBalanceTriggered.cxx:1
 AliBalanceTriggered.cxx:2
 AliBalanceTriggered.cxx:3
 AliBalanceTriggered.cxx:4
 AliBalanceTriggered.cxx:5
 AliBalanceTriggered.cxx:6
 AliBalanceTriggered.cxx:7
 AliBalanceTriggered.cxx:8
 AliBalanceTriggered.cxx:9
 AliBalanceTriggered.cxx:10
 AliBalanceTriggered.cxx:11
 AliBalanceTriggered.cxx:12
 AliBalanceTriggered.cxx:13
 AliBalanceTriggered.cxx:14
 AliBalanceTriggered.cxx:15
 AliBalanceTriggered.cxx:16
 AliBalanceTriggered.cxx:17
 AliBalanceTriggered.cxx:18
 AliBalanceTriggered.cxx:19
 AliBalanceTriggered.cxx:20
 AliBalanceTriggered.cxx:21
 AliBalanceTriggered.cxx:22
 AliBalanceTriggered.cxx:23
 AliBalanceTriggered.cxx:24
 AliBalanceTriggered.cxx:25
 AliBalanceTriggered.cxx:26
 AliBalanceTriggered.cxx:27
 AliBalanceTriggered.cxx:28
 AliBalanceTriggered.cxx:29
 AliBalanceTriggered.cxx:30
 AliBalanceTriggered.cxx:31
 AliBalanceTriggered.cxx:32
 AliBalanceTriggered.cxx:33
 AliBalanceTriggered.cxx:34
 AliBalanceTriggered.cxx:35
 AliBalanceTriggered.cxx:36
 AliBalanceTriggered.cxx:37
 AliBalanceTriggered.cxx:38
 AliBalanceTriggered.cxx:39
 AliBalanceTriggered.cxx:40
 AliBalanceTriggered.cxx:41
 AliBalanceTriggered.cxx:42
 AliBalanceTriggered.cxx:43
 AliBalanceTriggered.cxx:44
 AliBalanceTriggered.cxx:45
 AliBalanceTriggered.cxx:46
 AliBalanceTriggered.cxx:47
 AliBalanceTriggered.cxx:48
 AliBalanceTriggered.cxx:49
 AliBalanceTriggered.cxx:50
 AliBalanceTriggered.cxx:51
 AliBalanceTriggered.cxx:52
 AliBalanceTriggered.cxx:53
 AliBalanceTriggered.cxx:54
 AliBalanceTriggered.cxx:55
 AliBalanceTriggered.cxx:56
 AliBalanceTriggered.cxx:57
 AliBalanceTriggered.cxx:58
 AliBalanceTriggered.cxx:59
 AliBalanceTriggered.cxx:60
 AliBalanceTriggered.cxx:61
 AliBalanceTriggered.cxx:62
 AliBalanceTriggered.cxx:63
 AliBalanceTriggered.cxx:64
 AliBalanceTriggered.cxx:65
 AliBalanceTriggered.cxx:66
 AliBalanceTriggered.cxx:67
 AliBalanceTriggered.cxx:68
 AliBalanceTriggered.cxx:69
 AliBalanceTriggered.cxx:70
 AliBalanceTriggered.cxx:71
 AliBalanceTriggered.cxx:72
 AliBalanceTriggered.cxx:73
 AliBalanceTriggered.cxx:74
 AliBalanceTriggered.cxx:75
 AliBalanceTriggered.cxx:76
 AliBalanceTriggered.cxx:77
 AliBalanceTriggered.cxx:78
 AliBalanceTriggered.cxx:79
 AliBalanceTriggered.cxx:80
 AliBalanceTriggered.cxx:81
 AliBalanceTriggered.cxx:82
 AliBalanceTriggered.cxx:83
 AliBalanceTriggered.cxx:84
 AliBalanceTriggered.cxx:85
 AliBalanceTriggered.cxx:86
 AliBalanceTriggered.cxx:87
 AliBalanceTriggered.cxx:88
 AliBalanceTriggered.cxx:89
 AliBalanceTriggered.cxx:90
 AliBalanceTriggered.cxx:91
 AliBalanceTriggered.cxx:92
 AliBalanceTriggered.cxx:93
 AliBalanceTriggered.cxx:94
 AliBalanceTriggered.cxx:95
 AliBalanceTriggered.cxx:96
 AliBalanceTriggered.cxx:97
 AliBalanceTriggered.cxx:98
 AliBalanceTriggered.cxx:99
 AliBalanceTriggered.cxx:100
 AliBalanceTriggered.cxx:101
 AliBalanceTriggered.cxx:102
 AliBalanceTriggered.cxx:103
 AliBalanceTriggered.cxx:104
 AliBalanceTriggered.cxx:105
 AliBalanceTriggered.cxx:106
 AliBalanceTriggered.cxx:107
 AliBalanceTriggered.cxx:108
 AliBalanceTriggered.cxx:109
 AliBalanceTriggered.cxx:110
 AliBalanceTriggered.cxx:111
 AliBalanceTriggered.cxx:112
 AliBalanceTriggered.cxx:113
 AliBalanceTriggered.cxx:114
 AliBalanceTriggered.cxx:115
 AliBalanceTriggered.cxx:116
 AliBalanceTriggered.cxx:117
 AliBalanceTriggered.cxx:118
 AliBalanceTriggered.cxx:119
 AliBalanceTriggered.cxx:120
 AliBalanceTriggered.cxx:121
 AliBalanceTriggered.cxx:122
 AliBalanceTriggered.cxx:123
 AliBalanceTriggered.cxx:124
 AliBalanceTriggered.cxx:125
 AliBalanceTriggered.cxx:126
 AliBalanceTriggered.cxx:127
 AliBalanceTriggered.cxx:128
 AliBalanceTriggered.cxx:129
 AliBalanceTriggered.cxx:130
 AliBalanceTriggered.cxx:131
 AliBalanceTriggered.cxx:132
 AliBalanceTriggered.cxx:133
 AliBalanceTriggered.cxx:134
 AliBalanceTriggered.cxx:135
 AliBalanceTriggered.cxx:136
 AliBalanceTriggered.cxx:137
 AliBalanceTriggered.cxx:138
 AliBalanceTriggered.cxx:139
 AliBalanceTriggered.cxx:140
 AliBalanceTriggered.cxx:141
 AliBalanceTriggered.cxx:142
 AliBalanceTriggered.cxx:143
 AliBalanceTriggered.cxx:144
 AliBalanceTriggered.cxx:145
 AliBalanceTriggered.cxx:146
 AliBalanceTriggered.cxx:147
 AliBalanceTriggered.cxx:148
 AliBalanceTriggered.cxx:149
 AliBalanceTriggered.cxx:150
 AliBalanceTriggered.cxx:151
 AliBalanceTriggered.cxx:152
 AliBalanceTriggered.cxx:153
 AliBalanceTriggered.cxx:154
 AliBalanceTriggered.cxx:155
 AliBalanceTriggered.cxx:156
 AliBalanceTriggered.cxx:157
 AliBalanceTriggered.cxx:158
 AliBalanceTriggered.cxx:159
 AliBalanceTriggered.cxx:160
 AliBalanceTriggered.cxx:161
 AliBalanceTriggered.cxx:162
 AliBalanceTriggered.cxx:163
 AliBalanceTriggered.cxx:164
 AliBalanceTriggered.cxx:165
 AliBalanceTriggered.cxx:166
 AliBalanceTriggered.cxx:167
 AliBalanceTriggered.cxx:168
 AliBalanceTriggered.cxx:169
 AliBalanceTriggered.cxx:170
 AliBalanceTriggered.cxx:171
 AliBalanceTriggered.cxx:172
 AliBalanceTriggered.cxx:173
 AliBalanceTriggered.cxx:174
 AliBalanceTriggered.cxx:175
 AliBalanceTriggered.cxx:176
 AliBalanceTriggered.cxx:177
 AliBalanceTriggered.cxx:178
 AliBalanceTriggered.cxx:179
 AliBalanceTriggered.cxx:180
 AliBalanceTriggered.cxx:181
 AliBalanceTriggered.cxx:182
 AliBalanceTriggered.cxx:183
 AliBalanceTriggered.cxx:184
 AliBalanceTriggered.cxx:185
 AliBalanceTriggered.cxx:186
 AliBalanceTriggered.cxx:187
 AliBalanceTriggered.cxx:188
 AliBalanceTriggered.cxx:189
 AliBalanceTriggered.cxx:190
 AliBalanceTriggered.cxx:191
 AliBalanceTriggered.cxx:192
 AliBalanceTriggered.cxx:193
 AliBalanceTriggered.cxx:194
 AliBalanceTriggered.cxx:195
 AliBalanceTriggered.cxx:196
 AliBalanceTriggered.cxx:197
 AliBalanceTriggered.cxx:198
 AliBalanceTriggered.cxx:199
 AliBalanceTriggered.cxx:200
 AliBalanceTriggered.cxx:201
 AliBalanceTriggered.cxx:202
 AliBalanceTriggered.cxx:203
 AliBalanceTriggered.cxx:204
 AliBalanceTriggered.cxx:205
 AliBalanceTriggered.cxx:206
 AliBalanceTriggered.cxx:207
 AliBalanceTriggered.cxx:208
 AliBalanceTriggered.cxx:209
 AliBalanceTriggered.cxx:210
 AliBalanceTriggered.cxx:211
 AliBalanceTriggered.cxx:212
 AliBalanceTriggered.cxx:213
 AliBalanceTriggered.cxx:214
 AliBalanceTriggered.cxx:215
 AliBalanceTriggered.cxx:216
 AliBalanceTriggered.cxx:217
 AliBalanceTriggered.cxx:218
 AliBalanceTriggered.cxx:219
 AliBalanceTriggered.cxx:220
 AliBalanceTriggered.cxx:221
 AliBalanceTriggered.cxx:222
 AliBalanceTriggered.cxx:223
 AliBalanceTriggered.cxx:224
 AliBalanceTriggered.cxx:225
 AliBalanceTriggered.cxx:226
 AliBalanceTriggered.cxx:227
 AliBalanceTriggered.cxx:228
 AliBalanceTriggered.cxx:229
 AliBalanceTriggered.cxx:230
 AliBalanceTriggered.cxx:231
 AliBalanceTriggered.cxx:232
 AliBalanceTriggered.cxx:233
 AliBalanceTriggered.cxx:234
 AliBalanceTriggered.cxx:235
 AliBalanceTriggered.cxx:236
 AliBalanceTriggered.cxx:237
 AliBalanceTriggered.cxx:238
 AliBalanceTriggered.cxx:239
 AliBalanceTriggered.cxx:240
 AliBalanceTriggered.cxx:241
 AliBalanceTriggered.cxx:242
 AliBalanceTriggered.cxx:243
 AliBalanceTriggered.cxx:244
 AliBalanceTriggered.cxx:245
 AliBalanceTriggered.cxx:246
 AliBalanceTriggered.cxx:247
 AliBalanceTriggered.cxx:248
 AliBalanceTriggered.cxx:249
 AliBalanceTriggered.cxx:250
 AliBalanceTriggered.cxx:251
 AliBalanceTriggered.cxx:252
 AliBalanceTriggered.cxx:253
 AliBalanceTriggered.cxx:254
 AliBalanceTriggered.cxx:255
 AliBalanceTriggered.cxx:256
 AliBalanceTriggered.cxx:257
 AliBalanceTriggered.cxx:258
 AliBalanceTriggered.cxx:259
 AliBalanceTriggered.cxx:260
 AliBalanceTriggered.cxx:261
 AliBalanceTriggered.cxx:262
 AliBalanceTriggered.cxx:263
 AliBalanceTriggered.cxx:264
 AliBalanceTriggered.cxx:265
 AliBalanceTriggered.cxx:266
 AliBalanceTriggered.cxx:267
 AliBalanceTriggered.cxx:268
 AliBalanceTriggered.cxx:269
 AliBalanceTriggered.cxx:270
 AliBalanceTriggered.cxx:271
 AliBalanceTriggered.cxx:272
 AliBalanceTriggered.cxx:273
 AliBalanceTriggered.cxx:274
 AliBalanceTriggered.cxx:275
 AliBalanceTriggered.cxx:276
 AliBalanceTriggered.cxx:277
 AliBalanceTriggered.cxx:278
 AliBalanceTriggered.cxx:279
 AliBalanceTriggered.cxx:280
 AliBalanceTriggered.cxx:281
 AliBalanceTriggered.cxx:282
 AliBalanceTriggered.cxx:283
 AliBalanceTriggered.cxx:284
 AliBalanceTriggered.cxx:285
 AliBalanceTriggered.cxx:286
 AliBalanceTriggered.cxx:287
 AliBalanceTriggered.cxx:288
 AliBalanceTriggered.cxx:289
 AliBalanceTriggered.cxx:290
 AliBalanceTriggered.cxx:291
 AliBalanceTriggered.cxx:292
 AliBalanceTriggered.cxx:293
 AliBalanceTriggered.cxx:294
 AliBalanceTriggered.cxx:295
 AliBalanceTriggered.cxx:296
 AliBalanceTriggered.cxx:297
 AliBalanceTriggered.cxx:298
 AliBalanceTriggered.cxx:299
 AliBalanceTriggered.cxx:300
 AliBalanceTriggered.cxx:301
 AliBalanceTriggered.cxx:302
 AliBalanceTriggered.cxx:303
 AliBalanceTriggered.cxx:304
 AliBalanceTriggered.cxx:305
 AliBalanceTriggered.cxx:306
 AliBalanceTriggered.cxx:307
 AliBalanceTriggered.cxx:308
 AliBalanceTriggered.cxx:309
 AliBalanceTriggered.cxx:310
 AliBalanceTriggered.cxx:311
 AliBalanceTriggered.cxx:312
 AliBalanceTriggered.cxx:313
 AliBalanceTriggered.cxx:314
 AliBalanceTriggered.cxx:315
 AliBalanceTriggered.cxx:316
 AliBalanceTriggered.cxx:317
 AliBalanceTriggered.cxx:318
 AliBalanceTriggered.cxx:319
 AliBalanceTriggered.cxx:320
 AliBalanceTriggered.cxx:321
 AliBalanceTriggered.cxx:322
 AliBalanceTriggered.cxx:323
 AliBalanceTriggered.cxx:324
 AliBalanceTriggered.cxx:325
 AliBalanceTriggered.cxx:326
 AliBalanceTriggered.cxx:327
 AliBalanceTriggered.cxx:328
 AliBalanceTriggered.cxx:329
 AliBalanceTriggered.cxx:330
 AliBalanceTriggered.cxx:331
 AliBalanceTriggered.cxx:332
 AliBalanceTriggered.cxx:333
 AliBalanceTriggered.cxx:334
 AliBalanceTriggered.cxx:335
 AliBalanceTriggered.cxx:336
 AliBalanceTriggered.cxx:337
 AliBalanceTriggered.cxx:338
 AliBalanceTriggered.cxx:339
 AliBalanceTriggered.cxx:340
 AliBalanceTriggered.cxx:341
 AliBalanceTriggered.cxx:342
 AliBalanceTriggered.cxx:343
 AliBalanceTriggered.cxx:344
 AliBalanceTriggered.cxx:345
 AliBalanceTriggered.cxx:346
 AliBalanceTriggered.cxx:347
 AliBalanceTriggered.cxx:348
 AliBalanceTriggered.cxx:349
 AliBalanceTriggered.cxx:350
 AliBalanceTriggered.cxx:351
 AliBalanceTriggered.cxx:352
 AliBalanceTriggered.cxx:353
 AliBalanceTriggered.cxx:354
 AliBalanceTriggered.cxx:355
 AliBalanceTriggered.cxx:356
 AliBalanceTriggered.cxx:357
 AliBalanceTriggered.cxx:358
 AliBalanceTriggered.cxx:359
 AliBalanceTriggered.cxx:360
 AliBalanceTriggered.cxx:361
 AliBalanceTriggered.cxx:362
 AliBalanceTriggered.cxx:363
 AliBalanceTriggered.cxx:364
 AliBalanceTriggered.cxx:365
 AliBalanceTriggered.cxx:366
 AliBalanceTriggered.cxx:367
 AliBalanceTriggered.cxx:368
 AliBalanceTriggered.cxx:369
 AliBalanceTriggered.cxx:370
 AliBalanceTriggered.cxx:371
 AliBalanceTriggered.cxx:372
 AliBalanceTriggered.cxx:373
 AliBalanceTriggered.cxx:374
 AliBalanceTriggered.cxx:375
 AliBalanceTriggered.cxx:376
 AliBalanceTriggered.cxx:377
 AliBalanceTriggered.cxx:378
 AliBalanceTriggered.cxx:379
 AliBalanceTriggered.cxx:380
 AliBalanceTriggered.cxx:381
 AliBalanceTriggered.cxx:382
 AliBalanceTriggered.cxx:383
 AliBalanceTriggered.cxx:384
 AliBalanceTriggered.cxx:385
 AliBalanceTriggered.cxx:386
 AliBalanceTriggered.cxx:387
 AliBalanceTriggered.cxx:388
 AliBalanceTriggered.cxx:389
 AliBalanceTriggered.cxx:390
 AliBalanceTriggered.cxx:391
 AliBalanceTriggered.cxx:392
 AliBalanceTriggered.cxx:393
 AliBalanceTriggered.cxx:394
 AliBalanceTriggered.cxx:395
 AliBalanceTriggered.cxx:396
 AliBalanceTriggered.cxx:397
 AliBalanceTriggered.cxx:398
 AliBalanceTriggered.cxx:399
 AliBalanceTriggered.cxx:400
 AliBalanceTriggered.cxx:401
 AliBalanceTriggered.cxx:402
 AliBalanceTriggered.cxx:403
 AliBalanceTriggered.cxx:404
 AliBalanceTriggered.cxx:405
 AliBalanceTriggered.cxx:406
 AliBalanceTriggered.cxx:407
 AliBalanceTriggered.cxx:408
 AliBalanceTriggered.cxx:409
 AliBalanceTriggered.cxx:410
 AliBalanceTriggered.cxx:411
 AliBalanceTriggered.cxx:412
 AliBalanceTriggered.cxx:413
 AliBalanceTriggered.cxx:414
 AliBalanceTriggered.cxx:415
 AliBalanceTriggered.cxx:416
 AliBalanceTriggered.cxx:417
 AliBalanceTriggered.cxx:418
 AliBalanceTriggered.cxx:419
 AliBalanceTriggered.cxx:420
 AliBalanceTriggered.cxx:421
 AliBalanceTriggered.cxx:422
 AliBalanceTriggered.cxx:423
 AliBalanceTriggered.cxx:424
 AliBalanceTriggered.cxx:425
 AliBalanceTriggered.cxx:426
 AliBalanceTriggered.cxx:427
 AliBalanceTriggered.cxx:428
 AliBalanceTriggered.cxx:429
 AliBalanceTriggered.cxx:430
 AliBalanceTriggered.cxx:431
 AliBalanceTriggered.cxx:432
 AliBalanceTriggered.cxx:433
 AliBalanceTriggered.cxx:434
 AliBalanceTriggered.cxx:435
 AliBalanceTriggered.cxx:436
 AliBalanceTriggered.cxx:437
 AliBalanceTriggered.cxx:438
 AliBalanceTriggered.cxx:439
 AliBalanceTriggered.cxx:440
 AliBalanceTriggered.cxx:441
 AliBalanceTriggered.cxx:442
 AliBalanceTriggered.cxx:443
 AliBalanceTriggered.cxx:444
 AliBalanceTriggered.cxx:445
 AliBalanceTriggered.cxx:446
 AliBalanceTriggered.cxx:447
 AliBalanceTriggered.cxx:448
 AliBalanceTriggered.cxx:449
 AliBalanceTriggered.cxx:450
 AliBalanceTriggered.cxx:451
 AliBalanceTriggered.cxx:452
 AliBalanceTriggered.cxx:453
 AliBalanceTriggered.cxx:454
 AliBalanceTriggered.cxx:455
 AliBalanceTriggered.cxx:456
 AliBalanceTriggered.cxx:457
 AliBalanceTriggered.cxx:458
 AliBalanceTriggered.cxx:459
 AliBalanceTriggered.cxx:460
 AliBalanceTriggered.cxx:461
 AliBalanceTriggered.cxx:462
 AliBalanceTriggered.cxx:463
 AliBalanceTriggered.cxx:464
 AliBalanceTriggered.cxx:465
 AliBalanceTriggered.cxx:466
 AliBalanceTriggered.cxx:467
 AliBalanceTriggered.cxx:468
 AliBalanceTriggered.cxx:469
 AliBalanceTriggered.cxx:470
 AliBalanceTriggered.cxx:471
 AliBalanceTriggered.cxx:472
 AliBalanceTriggered.cxx:473
 AliBalanceTriggered.cxx:474
 AliBalanceTriggered.cxx:475
 AliBalanceTriggered.cxx:476
 AliBalanceTriggered.cxx:477
 AliBalanceTriggered.cxx:478
 AliBalanceTriggered.cxx:479
 AliBalanceTriggered.cxx:480
 AliBalanceTriggered.cxx:481
 AliBalanceTriggered.cxx:482
 AliBalanceTriggered.cxx:483
 AliBalanceTriggered.cxx:484
 AliBalanceTriggered.cxx:485
 AliBalanceTriggered.cxx:486
 AliBalanceTriggered.cxx:487
 AliBalanceTriggered.cxx:488
 AliBalanceTriggered.cxx:489
 AliBalanceTriggered.cxx:490
 AliBalanceTriggered.cxx:491
 AliBalanceTriggered.cxx:492
 AliBalanceTriggered.cxx:493
 AliBalanceTriggered.cxx:494
 AliBalanceTriggered.cxx:495
 AliBalanceTriggered.cxx:496
 AliBalanceTriggered.cxx:497
 AliBalanceTriggered.cxx:498
 AliBalanceTriggered.cxx:499
 AliBalanceTriggered.cxx:500
 AliBalanceTriggered.cxx:501
 AliBalanceTriggered.cxx:502
 AliBalanceTriggered.cxx:503
 AliBalanceTriggered.cxx:504
 AliBalanceTriggered.cxx:505
 AliBalanceTriggered.cxx:506
 AliBalanceTriggered.cxx:507
 AliBalanceTriggered.cxx:508
 AliBalanceTriggered.cxx:509
 AliBalanceTriggered.cxx:510
 AliBalanceTriggered.cxx:511
 AliBalanceTriggered.cxx:512
 AliBalanceTriggered.cxx:513
 AliBalanceTriggered.cxx:514
 AliBalanceTriggered.cxx:515
 AliBalanceTriggered.cxx:516
 AliBalanceTriggered.cxx:517
 AliBalanceTriggered.cxx:518
 AliBalanceTriggered.cxx:519
 AliBalanceTriggered.cxx:520
 AliBalanceTriggered.cxx:521
 AliBalanceTriggered.cxx:522
 AliBalanceTriggered.cxx:523
 AliBalanceTriggered.cxx:524
 AliBalanceTriggered.cxx:525
 AliBalanceTriggered.cxx:526
 AliBalanceTriggered.cxx:527
 AliBalanceTriggered.cxx:528
 AliBalanceTriggered.cxx:529
 AliBalanceTriggered.cxx:530
 AliBalanceTriggered.cxx:531
 AliBalanceTriggered.cxx:532
 AliBalanceTriggered.cxx:533
 AliBalanceTriggered.cxx:534
 AliBalanceTriggered.cxx:535
 AliBalanceTriggered.cxx:536
 AliBalanceTriggered.cxx:537
 AliBalanceTriggered.cxx:538
 AliBalanceTriggered.cxx:539
 AliBalanceTriggered.cxx:540
 AliBalanceTriggered.cxx:541
 AliBalanceTriggered.cxx:542
 AliBalanceTriggered.cxx:543
 AliBalanceTriggered.cxx:544
 AliBalanceTriggered.cxx:545
 AliBalanceTriggered.cxx:546
 AliBalanceTriggered.cxx:547
 AliBalanceTriggered.cxx:548
 AliBalanceTriggered.cxx:549
 AliBalanceTriggered.cxx:550
 AliBalanceTriggered.cxx:551
 AliBalanceTriggered.cxx:552
 AliBalanceTriggered.cxx:553
 AliBalanceTriggered.cxx:554
 AliBalanceTriggered.cxx:555
 AliBalanceTriggered.cxx:556
 AliBalanceTriggered.cxx:557
 AliBalanceTriggered.cxx:558
 AliBalanceTriggered.cxx:559
 AliBalanceTriggered.cxx:560
 AliBalanceTriggered.cxx:561
 AliBalanceTriggered.cxx:562
 AliBalanceTriggered.cxx:563
 AliBalanceTriggered.cxx:564
 AliBalanceTriggered.cxx:565
 AliBalanceTriggered.cxx:566
 AliBalanceTriggered.cxx:567
 AliBalanceTriggered.cxx:568
 AliBalanceTriggered.cxx:569
 AliBalanceTriggered.cxx:570
 AliBalanceTriggered.cxx:571
 AliBalanceTriggered.cxx:572
 AliBalanceTriggered.cxx:573
 AliBalanceTriggered.cxx:574
 AliBalanceTriggered.cxx:575
 AliBalanceTriggered.cxx:576
 AliBalanceTriggered.cxx:577
 AliBalanceTriggered.cxx:578
 AliBalanceTriggered.cxx:579
 AliBalanceTriggered.cxx:580
 AliBalanceTriggered.cxx:581
 AliBalanceTriggered.cxx:582
 AliBalanceTriggered.cxx:583
 AliBalanceTriggered.cxx:584
 AliBalanceTriggered.cxx:585
 AliBalanceTriggered.cxx:586
 AliBalanceTriggered.cxx:587
 AliBalanceTriggered.cxx:588
 AliBalanceTriggered.cxx:589
 AliBalanceTriggered.cxx:590
 AliBalanceTriggered.cxx:591
 AliBalanceTriggered.cxx:592
 AliBalanceTriggered.cxx:593
 AliBalanceTriggered.cxx:594
 AliBalanceTriggered.cxx:595
 AliBalanceTriggered.cxx:596
 AliBalanceTriggered.cxx:597
 AliBalanceTriggered.cxx:598
 AliBalanceTriggered.cxx:599
 AliBalanceTriggered.cxx:600
 AliBalanceTriggered.cxx:601
 AliBalanceTriggered.cxx:602
 AliBalanceTriggered.cxx:603
 AliBalanceTriggered.cxx:604
 AliBalanceTriggered.cxx:605
 AliBalanceTriggered.cxx:606
 AliBalanceTriggered.cxx:607
 AliBalanceTriggered.cxx:608
 AliBalanceTriggered.cxx:609
 AliBalanceTriggered.cxx:610
 AliBalanceTriggered.cxx:611
 AliBalanceTriggered.cxx:612
 AliBalanceTriggered.cxx:613
 AliBalanceTriggered.cxx:614
 AliBalanceTriggered.cxx:615
 AliBalanceTriggered.cxx:616
 AliBalanceTriggered.cxx:617
 AliBalanceTriggered.cxx:618
 AliBalanceTriggered.cxx:619
 AliBalanceTriggered.cxx:620
 AliBalanceTriggered.cxx:621
 AliBalanceTriggered.cxx:622
 AliBalanceTriggered.cxx:623
 AliBalanceTriggered.cxx:624
 AliBalanceTriggered.cxx:625
 AliBalanceTriggered.cxx:626
 AliBalanceTriggered.cxx:627
 AliBalanceTriggered.cxx:628
 AliBalanceTriggered.cxx:629
 AliBalanceTriggered.cxx:630
 AliBalanceTriggered.cxx:631
 AliBalanceTriggered.cxx:632
 AliBalanceTriggered.cxx:633
 AliBalanceTriggered.cxx:634
 AliBalanceTriggered.cxx:635
 AliBalanceTriggered.cxx:636
 AliBalanceTriggered.cxx:637
 AliBalanceTriggered.cxx:638
 AliBalanceTriggered.cxx:639
 AliBalanceTriggered.cxx:640
 AliBalanceTriggered.cxx:641
 AliBalanceTriggered.cxx:642
 AliBalanceTriggered.cxx:643
 AliBalanceTriggered.cxx:644
 AliBalanceTriggered.cxx:645
 AliBalanceTriggered.cxx:646
 AliBalanceTriggered.cxx:647
 AliBalanceTriggered.cxx:648
 AliBalanceTriggered.cxx:649
 AliBalanceTriggered.cxx:650
 AliBalanceTriggered.cxx:651
 AliBalanceTriggered.cxx:652
 AliBalanceTriggered.cxx:653
 AliBalanceTriggered.cxx:654
 AliBalanceTriggered.cxx:655
 AliBalanceTriggered.cxx:656
 AliBalanceTriggered.cxx:657
 AliBalanceTriggered.cxx:658
 AliBalanceTriggered.cxx:659
 AliBalanceTriggered.cxx:660
 AliBalanceTriggered.cxx:661
 AliBalanceTriggered.cxx:662
 AliBalanceTriggered.cxx:663
 AliBalanceTriggered.cxx:664
 AliBalanceTriggered.cxx:665
 AliBalanceTriggered.cxx:666
 AliBalanceTriggered.cxx:667
 AliBalanceTriggered.cxx:668
 AliBalanceTriggered.cxx:669
 AliBalanceTriggered.cxx:670
 AliBalanceTriggered.cxx:671
 AliBalanceTriggered.cxx:672
 AliBalanceTriggered.cxx:673
 AliBalanceTriggered.cxx:674
 AliBalanceTriggered.cxx:675
 AliBalanceTriggered.cxx:676
 AliBalanceTriggered.cxx:677