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 <TH2D.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 "AliBalance.h"
#include "AliBalanceEventMixing.h"

using std::cout;
using std::cerr;
using std::endl;

ClassImp(AliBalanceEventMixing)

//____________________________________________________________________//
AliBalanceEventMixing::AliBalanceEventMixing() :
  TObject(), 
  fShuffle(kFALSE),
  fHBTcut(kFALSE),
  fConversionCut(kFALSE),
  fAnalysisLevel("ESD"),
  fAnalyzedEvents(0) ,
  fCentralityId(0) ,
  fCentStart(0.),
  fCentStop(0.)
{
  // Default constructor
 
  for(Int_t i = 0; i < ANALYSIS_TYPES; i++){
    if(i == 6) {
      fNumberOfBins[i] = 180;
      fP1Start[i]      = -360.0;
      fP1Stop[i]       = 360.0;
      fP2Start[i]      = -360.0;
      fP2Stop[i]       = 360.0;
      fP2Step[i]       = 0.1;
    }
    else {
      fNumberOfBins[i] = 20;
      fP1Start[i]      = -1.0;
      fP1Stop[i]       = 1.0;
      fP2Start[i]      = 0.0;
      fP2Stop[i]       = 2.0;
    }
    fP2Step[i] = TMath::Abs(fP2Start - fP2Stop) / (Double_t)fNumberOfBins[i];
    fCentStart = 0.;
    fCentStop  = 0.;

    fNn[i] = 0.0;
    fNp[i] = 0.0;

    for(Int_t j = 0; j < MAXIMUM_NUMBER_OF_STEPS; j++) {
      fNpp[i][j] = .0;
      fNnn[i][j] = .0;
      fNpn[i][j] = .0;
      fNnp[i][j] = .0;
      fB[i][j] = 0.0;
      ferror[i][j] = 0.0;
    }

    fHistP[i]  = NULL;
    fHistN[i]  = NULL;
    fHistPP[i] = NULL;
    fHistPN[i] = NULL;
    fHistNP[i] = NULL;
    fHistNN[i] = NULL;

  }
}


//____________________________________________________________________//
AliBalanceEventMixing::AliBalanceEventMixing(const AliBalanceEventMixing& balance):
  TObject(balance), fShuffle(balance.fShuffle),
  fHBTcut(balance.fHBTcut), 
  fConversionCut(balance.fConversionCut),  
  fAnalysisLevel(balance.fAnalysisLevel),
  fAnalyzedEvents(balance.fAnalyzedEvents), 
  fCentralityId(balance.fCentralityId),
  fCentStart(balance.fCentStart),
  fCentStop(balance.fCentStop) {
  //copy constructor
  for(Int_t i = 0; i < ANALYSIS_TYPES; i++){
    fNn[i] = balance.fNn[i];
    fNp[i] = balance.fNp[i];

    fP1Start[i]      = balance.fP1Start[i];
    fP1Stop[i]       = balance.fP1Stop[i];
    fNumberOfBins[i] = balance.fNumberOfBins[i];
    fP2Start[i]      = balance.fP2Start[i];
    fP2Stop[i]       = balance.fP2Stop[i];
    fP2Step[i]       = balance.fP2Step[i];
    fCentStart       = balance.fCentStart;
    fCentStop        = balance.fCentStop; 

    fHistP[i]        = balance.fHistP[i];
    fHistN[i]        = balance.fHistN[i];
    fHistPN[i]        = balance.fHistPN[i];
    fHistNP[i]        = balance.fHistNP[i];
    fHistPP[i]        = balance.fHistPP[i];
    fHistNN[i]        = balance.fHistNN[i];

    for(Int_t j = 0; j < MAXIMUM_NUMBER_OF_STEPS; j++) {
      fNpp[i][j] = .0;
      fNnn[i][j] = .0;
      fNpn[i][j] = .0;
      fNnp[i][j] = .0;
      fB[i][j] = 0.0;
      ferror[i][j] = 0.0;
    } 
  }
 }
 

//____________________________________________________________________//
AliBalanceEventMixing::~AliBalanceEventMixing() {
  // Destructor

  for(Int_t i = 0; i < ANALYSIS_TYPES; i++){
 
    delete fHistP[i];
    delete fHistN[i];
    delete fHistPN[i];
    delete fHistNP[i];
    delete fHistPP[i];
    delete fHistNN[i];
  
  }
}

//____________________________________________________________________//
void AliBalanceEventMixing::SetInterval(Int_t iAnalysisType,
			     Double_t p1Start, Double_t p1Stop,
			     Int_t ibins, Double_t p2Start, Double_t p2Stop) {
  // Sets the analyzed interval. 
  // Set the same Information for all analyses

  if(iAnalysisType == -1){             
    for(Int_t i = 0; i < ANALYSIS_TYPES; i++){
      fP1Start[i] = p1Start;
      fP1Stop[i] = p1Stop;
      fNumberOfBins[i] = ibins;
      fP2Start[i] = p2Start;
      fP2Stop[i] = p2Stop;
      fP2Step[i] = TMath::Abs(p2Start - p2Stop) / (Double_t)fNumberOfBins[i];
    }
  }
  // Set the Information for one analysis
  else if((iAnalysisType > -1) && (iAnalysisType < ANALYSIS_TYPES)) {
    fP1Start[iAnalysisType] = p1Start;
    fP1Stop[iAnalysisType] = p1Stop;
    fNumberOfBins[iAnalysisType] = ibins;
    fP2Start[iAnalysisType] = p2Start;
    fP2Stop[iAnalysisType] = p2Stop;
    fP2Step[iAnalysisType] = TMath::Abs(p2Start - p2Stop) / (Double_t)fNumberOfBins[iAnalysisType];
  }
  else {
    AliError("Wrong ANALYSIS number!");
  }
}

//____________________________________________________________________//
void AliBalanceEventMixing::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 histName;
  for(Int_t iAnalysisType = 0; iAnalysisType < ANALYSIS_TYPES; iAnalysisType++) {
    histName = "fHistP"; histName += kBFAnalysisType[iAnalysisType]; 
    if(fShuffle) histName.Append("_shuffle");
    if(fCentralityId) histName += fCentralityId.Data();
    fHistP[iAnalysisType] = new TH2D(histName.Data(),"",fCentStop-fCentStart,fCentStart,fCentStop,100,fP1Start[iAnalysisType],fP1Stop[iAnalysisType]);

    histName = "fHistN"; histName += kBFAnalysisType[iAnalysisType]; 
    if(fShuffle) histName.Append("_shuffle");
    if(fCentralityId) histName += fCentralityId.Data();
    fHistN[iAnalysisType] = new TH2D(histName.Data(),"",fCentStop-fCentStart,fCentStart,fCentStop,100,fP1Start[iAnalysisType],fP1Stop[iAnalysisType]);
  
    histName = "fHistPN"; histName += kBFAnalysisType[iAnalysisType]; 
    if(fShuffle) histName.Append("_shuffle");
    if(fCentralityId) histName += fCentralityId.Data();
    fHistPN[iAnalysisType] = new TH2D(histName.Data(),"",fCentStop-fCentStart,fCentStart,fCentStop,fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]);
    
    histName = "fHistNP"; histName += kBFAnalysisType[iAnalysisType]; 
    if(fShuffle) histName.Append("_shuffle");
    if(fCentralityId) histName += fCentralityId.Data();
    fHistNP[iAnalysisType] = new TH2D(histName.Data(),"",fCentStop-fCentStart,fCentStart,fCentStop,fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]);
    
    histName = "fHistPP"; histName += kBFAnalysisType[iAnalysisType]; 
    if(fShuffle) histName.Append("_shuffle");
    if(fCentralityId) histName += fCentralityId.Data();
    fHistPP[iAnalysisType] = new TH2D(histName.Data(),"",fCentStop-fCentStart,fCentStart,fCentStop,fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]);
    
    histName = "fHistNN"; histName += kBFAnalysisType[iAnalysisType]; 
    if(fShuffle) histName.Append("_shuffle");
    if(fCentralityId) histName += fCentralityId.Data();
    fHistNN[iAnalysisType] = new TH2D(histName.Data(),"",fCentStop-fCentStart,fCentStart,fCentStop,fNumberOfBins[iAnalysisType],fP2Start[iAnalysisType],fP2Stop[iAnalysisType]);
  }

  TH1::AddDirectory(oldStatus);

}

//____________________________________________________________________//
void AliBalanceEventMixing::PrintAnalysisSettings() {
  //prints the analysis settings
  
  Printf("======================================");
  Printf("Analysis level: %s",fAnalysisLevel.Data());
  Printf("======================================");
  for(Int_t ibin = 0; ibin < ANALYSIS_TYPES; ibin++){
    Printf("Interval info for variable %d",ibin);
    Printf("Analyzed interval (min.): %lf",fP2Start[ibin]);
    Printf("Analyzed interval (max.): %lf",fP2Stop[ibin]);
    Printf("Number of bins: %d",fNumberOfBins[ibin]);
    Printf("Step: %lf",fP2Step[ibin]);
    Printf("          ");
  }
  Printf("======================================");
}

//____________________________________________________________________//
void AliBalanceEventMixing::CalculateBalance(Float_t fCentrality,vector<Double_t> **chargeVector,Int_t iMainTrack,Float_t bSign) {
  // Calculates the balance function
  // For the event mixing only for all combinations of the first track (main event) with all other tracks (mix event)
  fAnalyzedEvents++;
  Int_t i = 0 , j = 0;
  Int_t iBin = 0;

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

  Int_t gNtrack = chargeVector[0]->size();
  //Printf("(AliBalanceEventMixing) Number of tracks: %d",gNtrack);

  for(i = 0; i < gNtrack;i++){

      // for event mixing: only store the track from the main event
      if(iMainTrack > -1){ 
	if(i>0) break;
      }
      
      Short_t charge          = chargeVector[0]->at(i);
      Double_t rapidity       = chargeVector[1]->at(i);
      Double_t pseudorapidity = chargeVector[2]->at(i);
      Double_t phi            = chargeVector[3]->at(i);
      
      //0:y - 1:eta - 2:Qlong - 3:Qout - 4:Qside - 5:Qinv - 6:phi
      for(Int_t iAnalysisType = 0; iAnalysisType < ANALYSIS_TYPES; iAnalysisType++) {
	if(iAnalysisType == kEta) {
	  if((pseudorapidity >= fP1Start[iAnalysisType]) && (pseudorapidity <= fP1Stop[iAnalysisType])) {
	    if(charge > 0) {
	      fNp[iAnalysisType] += 1.;
	      fHistP[iAnalysisType]->Fill(fCentrality,pseudorapidity);
	    }//charge > 0
	    if(charge < 0) {
	      fNn[iAnalysisType] += 1.;
	      fHistN[iAnalysisType]->Fill(fCentrality,pseudorapidity);
	    }//charge < 0
	  }//p1 interval check
	}//analysis type: eta
	else if(iAnalysisType == kPhi) {
	  if((phi >= fP1Start[iAnalysisType]) && (phi <= fP1Stop[iAnalysisType])) {
	    if(charge > 0) {
	      fNp[iAnalysisType] += 1.;
	      fHistP[iAnalysisType]->Fill(fCentrality,phi);
	    }//charge > 0
	    if(charge < 0) {
	      fNn[iAnalysisType] += 1.;
	      fHistN[iAnalysisType]->Fill(fCentrality,phi);
	    }//charge < 0
	  }//p1 interval check
	}//analysis type: phi
	else {
	  if((rapidity >= fP1Start[iAnalysisType]) && (rapidity <= fP1Stop[iAnalysisType])) {
	    if(charge > 0) {
	      fNp[iAnalysisType] += 1.;
	      fHistP[iAnalysisType]->Fill(fCentrality,rapidity);
	    }//charge > 0
	    if(charge < 0) {
	      fNn[iAnalysisType] += 1.;
	      fHistN[iAnalysisType]->Fill(fCentrality,rapidity);
	    }//charge < 0
	  }//p1 interval check
	}//analysis type: y, qside, qout, qlong, qinv
      }//analysis type loop
  }

  //Printf("Np: %lf - Nn: %lf",fNp[0],fNn[0]);

  Double_t dy = 0., deta = 0.;
  Double_t qLong = 0., qOut = 0., qSide = 0., qInv = 0.;
  Double_t dphi = 0.;

  Short_t charge1  = 0;
  Double_t eta1 = 0., rap1 = 0.;
  Double_t px1 = 0., py1 = 0., pz1 = 0.;
  Double_t pt1 = 0.;
  Double_t energy1 = 0.;
  Double_t phi1    = 0.;

  Short_t charge2  = 0;
  Double_t eta2 = 0., rap2 = 0.;
  Double_t px2 = 0., py2 = 0., pz2 = 0.;
  Double_t pt2 = 0.;
  Double_t energy2 = 0.;
  Double_t phi2    = 0.;
  //0:y - 1:eta - 2:Qlong - 3:Qout - 4:Qside - 5:Qinv - 6:phi
  for(i = 1; i < gNtrack; i++) {

      charge1 = chargeVector[0]->at(i);
      rap1    = chargeVector[1]->at(i);
      eta1    = chargeVector[2]->at(i);
      phi1    = chargeVector[3]->at(i);
      px1     = chargeVector[4]->at(i);
      py1     = chargeVector[5]->at(i);
      pz1     = chargeVector[6]->at(i);
      pt1     = chargeVector[7]->at(i);
      energy1 = chargeVector[8]->at(i);

     for(j = 0; j < i; j++) {

      // for event mixing: only store the track from the main event
      if(iMainTrack > -1){ 
	if(j>0) break;
      }

      charge2 = chargeVector[0]->at(j);
      rap2    = chargeVector[1]->at(j);
      eta2    = chargeVector[2]->at(j);
      phi2    = chargeVector[3]->at(j);
      px2     = chargeVector[4]->at(j);
      py2     = chargeVector[5]->at(j);
      pz2     = chargeVector[6]->at(j);
      pt2     = chargeVector[7]->at(j);
      energy2 = chargeVector[8]->at(j);
    
	// filling the arrays

	// RAPIDITY 
        dy = TMath::Abs(rap1 - rap2);

	// Eta
	deta = TMath::Abs(eta1 - eta2);

	//qlong
	Double_t eTot = energy1 + energy2;
	Double_t pxTot = px1 + px2;
	Double_t pyTot = py1 + py2;
	Double_t pzTot = pz1 + pz2;
	Double_t q0Tot = energy1 - energy2;
	Double_t qxTot = px1 - px2;
	Double_t qyTot = py1 - py2;
	Double_t qzTot = pz1 - pz2;

	Double_t eTot2 = eTot*eTot;
	Double_t pTot2 = pxTot*pxTot + pyTot*pyTot + pzTot*pzTot;
	Double_t pzTot2 = pzTot*pzTot;

	Double_t q0Tot2 = q0Tot*q0Tot;
	Double_t qTot2  = qxTot*qxTot + qyTot*qyTot + qzTot*qzTot;

	Double_t snn    = eTot2 - pTot2;
	Double_t ptTot2 = pTot2 - pzTot2 ;
	Double_t ptTot  = TMath::Sqrt( ptTot2 );
	
	qLong = TMath::Abs(eTot*qzTot - pzTot*q0Tot)/TMath::Sqrt(snn + ptTot2);
	
	//qout
	qOut = TMath::Sqrt(snn/(snn + ptTot2)) * TMath::Abs(pxTot*qxTot + pyTot*qyTot)/ptTot;
	
	//qside
	qSide = TMath::Abs(pxTot*qyTot - pyTot*qxTot)/ptTot;
	
	//qinv
	qInv = TMath::Sqrt(TMath::Abs(-q0Tot2 + qTot2 ));
	
	//phi
	dphi = TMath::Abs(phi1 - phi2);
	if(dphi>180) dphi = 360 - dphi;  //dphi should be between 0 and 180!

	// HBT like cut
	if(fHBTcut && charge1 * charge2 > 0){
	  //if( dphi < 3 || deta < 0.01 ){   // VERSION 1
	  //  continue;
	  
	  // VERSION 2 (Taken from DPhiCorrelations)
	  // the variables & cuthave been developed by the HBT group 
	  // see e.g. https://indico.cern.ch/materialDisplay.py?contribId=36&sessionId=6&materialId=slides&confId=142700
	  
	  // optimization
	  if (TMath::Abs(deta) < 0.02 * 2.5 * 3) //twoTrackEfficiencyCutValue = 0.02 [default for dphicorrelations]
	    {

	      // phi in rad
	      Float_t phi1rad = phi1*TMath::DegToRad();
	      Float_t phi2rad = phi2*TMath::DegToRad();

	      // check first boundaries to see if is worth to loop and find the minimum
	      Float_t dphistar1 = GetDPhiStar(phi1rad, pt1, charge1, phi2rad, pt2, charge2, 0.8, bSign);
	      Float_t dphistar2 = GetDPhiStar(phi1rad, pt1, charge1, phi2rad, pt2, charge2, 2.5, bSign);
	      
	      const Float_t kLimit = 0.02 * 3;
	      
	      Float_t dphistarminabs = 1e5;

	      if (TMath::Abs(dphistar1) < kLimit || TMath::Abs(dphistar2) < kLimit || dphistar1 * dphistar2 < 0 )
		{
		  for (Double_t rad=0.8; rad<2.51; rad+=0.01) 
		    {
		      Float_t dphistar = GetDPhiStar(phi1rad, pt1, charge1, phi2rad, pt2, charge2, rad, bSign);
		      Float_t dphistarabs = TMath::Abs(dphistar);
		      
		      if (dphistarabs < dphistarminabs)
			{
			  dphistarminabs = dphistarabs;
			}
		    }
		
		  if (dphistarminabs < 0.02 && TMath::Abs(deta) < 0.02)
		    {
		      //AliInfo(Form("HBT: Removed track pair %d %d with [[%f %f]] %f %f %f | %f %f %d %f %f %d %f", i, j, deta, dphi, dphistarminabs, dphistar1, dphistar2, phi1rad, pt1, charge1, phi2rad, pt2, charge2, bSign));
		      continue;
		    }
		}
	    }
	}
	
	// conversions
	if(fConversionCut){
	  if (charge1 * charge2 < 0)
	    {

	      Float_t m0 = 0.510e-3;
	      Float_t tantheta1 = 1e10;

	      // phi in rad
	      Float_t phi1rad = phi1*TMath::DegToRad();
	      Float_t phi2rad = phi2*TMath::DegToRad();
	      
	      if (eta1 < -1e-10 || eta1 > 1e-10)
		tantheta1 = 2 * TMath::Exp(-eta1) / ( 1 - TMath::Exp(-2*eta1));
	      
	      Float_t tantheta2 = 1e10;
	      if (eta2 < -1e-10 || eta2 > 1e-10)
		tantheta2 = 2 * TMath::Exp(-eta2) / ( 1 - TMath::Exp(-2*eta2));
	      
	      Float_t e1squ = m0 * m0 + pt1 * pt1 * (1.0 + 1.0 / tantheta1 / tantheta1);
	      Float_t e2squ = m0 * m0 + pt2 * pt2 * (1.0 + 1.0 / tantheta2 / tantheta2);

	      Float_t masssqu = 2 * m0 * m0 + 2 * ( TMath::Sqrt(e1squ * e2squ) - ( pt1 * pt2 * ( TMath::Cos(phi1rad - phi2rad) + 1.0 / tantheta1 / tantheta2 ) ) );

	      if (masssqu < 0.04*0.04){
		//AliInfo(Form("Conversion: Removed track pair %d %d with [[%f %f] %f %f] %d %d <- %f %f  %f %f   %f %f ", i, j, deta, dphi, masssqu, charge1, charge2,eta1,eta2,phi1,phi2,pt1,pt2));
		continue;
	      }
	    }
	}

	//0:y - 1:eta - 2:Qlong - 3:Qout - 4:Qside - 5:Qinv - 6:phi
	if((rap1 >= fP1Start[kRapidity]) && (rap1 <= fP1Stop[kRapidity]) && (rap2 >= fP1Start[kRapidity]) && (rap2 <= fP1Stop[kRapidity])) {

	  // rapidity
	  if( dy > fP2Start[kRapidity] && dy < fP2Stop[kRapidity]){
	    iBin = Int_t((dy-fP2Start[kRapidity])/fP2Step[kRapidity]);
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kRapidity][iBin] += 1.;
		fHistPP[kRapidity]->Fill(fCentrality,dy);
	      }
	      else if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kRapidity][iBin] += 1.;
		fHistNN[kRapidity]->Fill(fCentrality,dy);
	      }
	      else if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kRapidity][iBin] += 1.;
		fHistPN[kRapidity]->Fill(fCentrality,dy);
	      }
	      else if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kRapidity][iBin] += 1.;
		    fHistPN[kRapidity]->Fill(fCentrality,dy);
	      }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check
	
	// pseudorapidity
	if((eta1 >= fP1Start[kEta]) && (eta1 <= fP1Stop[kEta]) && (eta2 >= fP1Start[kEta]) && (eta2 <= fP1Stop[kEta])) {
	  if( deta > fP2Start[kEta] && deta < fP2Stop[kEta]){
	    iBin = Int_t((deta-fP2Start[kEta])/fP2Step[kEta]);	
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kEta][iBin] += 1.;
		fHistPP[kEta]->Fill(fCentrality,deta);
	      }
	      if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kEta][iBin] += 1.;
	   	    fHistNN[kEta]->Fill(fCentrality,deta);
	      }
	      if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kEta][iBin] += 1.;
		fHistPN[kEta]->Fill(fCentrality,deta);
	      }
	      if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kEta][iBin] += 1.;
	   	    fHistPN[kEta]->Fill(fCentrality,deta);
	      }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check
	
	// Qlong, out, side, inv
	// Check the p1 intervall for rapidity here (like for single tracks above)
	if((rap1 >= fP1Start[kRapidity]) && (rap1 <= fP1Stop[kRapidity]) && (rap2 >= fP1Start[kRapidity]) && (rap2 <= fP1Stop[kRapidity])) {
	  if( qLong > fP2Start[kQlong] && qLong < fP2Stop[kQlong]){
	    iBin = Int_t((qLong-fP2Start[kQlong])/fP2Step[kQlong]);	
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kQlong][iBin] += 1.;
		fHistPP[kQlong]->Fill(fCentrality,qLong);
	      }
	      if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kQlong][iBin] += 1.;
		fHistNN[kQlong]->Fill(fCentrality,qLong);
	      }
	      if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kQlong][iBin] += 1.;
		fHistPN[kQlong]->Fill(fCentrality,qLong);
	      }
	      if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kQlong][iBin] += 1.;
		fHistPN[kQlong]->Fill(fCentrality,qLong);
	      }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check
	  
	if((rap1 >= fP1Start[kRapidity]) && (rap1 <= fP1Stop[kRapidity]) && (rap2 >= fP1Start[kRapidity]) && (rap2 <= fP1Stop[kRapidity])) {
	  if( qOut > fP2Start[kQout] && qOut < fP2Stop[kQout]){
	    iBin = Int_t((qOut-fP2Start[kQout])/fP2Step[kQout]);	
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kQout][iBin] += 1.;
		fHistPP[kQout]->Fill(fCentrality,qOut);
	  	  }
	      if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kQout][iBin] += 1.;
		fHistNN[kQout]->Fill(fCentrality,qOut);
	      }
	      if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kQout][iBin] += 1.;
		fHistPN[kQout]->Fill(fCentrality,qOut);
	      }
	      if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kQout][iBin] += 1.;
		fHistPN[kQout]->Fill(fCentrality,qOut);
	      }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check	
	
	if((rap1 >= fP1Start[kRapidity]) && (rap1 <= fP1Stop[kRapidity]) && (rap2 >= fP1Start[kRapidity]) && (rap2 <= fP1Stop[kRapidity])) {
	  if( qSide > fP2Start[kQside] && qSide < fP2Stop[kQside]){
	    iBin = Int_t((qSide-fP2Start[kQside])/fP2Step[kQside]);	
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kQside][iBin] += 1.;
		fHistPP[kQside]->Fill(fCentrality,qSide);
	      }
	      if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kQside][iBin] += 1.;
		fHistNN[kQside]->Fill(fCentrality,qSide);
	      }
	      if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kQside][iBin] += 1.;
		fHistPN[kQside]->Fill(fCentrality,qSide);
	      }
	      if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kQside][iBin] += 1.;
		fHistPN[kQside]->Fill(fCentrality,qSide);
		  	  }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check
	
	if((rap1 >= fP1Start[kRapidity]) && (rap1 <= fP1Stop[kRapidity]) && (rap2 >= fP1Start[kRapidity]) && (rap2 <= fP1Stop[kRapidity])) {
	  if( qInv > fP2Start[kQinv] && qInv < fP2Stop[kQinv]){
	    iBin = Int_t((qInv-fP2Start[kQinv])/fP2Step[kQinv]);	
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kQinv][iBin] += 1.;
		fHistPP[kQinv]->Fill(fCentrality,qInv);
	      }
	      if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kQinv][iBin] += 1.;
		fHistNN[kQinv]->Fill(fCentrality,qInv);
	      }
	      if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kQinv][iBin] += 1.;
		fHistPN[kQinv]->Fill(fCentrality,qInv);
	      }
	      if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kQinv][iBin] += 1.;
		fHistPN[kQinv]->Fill(fCentrality,qInv);
	      }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check
	
	// Phi
	if((phi1 >= fP1Start[kPhi]) && (phi1 <= fP1Stop[kPhi]) && (phi2 >= fP1Start[kPhi]) && (phi2 <= fP1Stop[kPhi])) {
	  if( dphi > fP2Start[kPhi] && dphi < fP2Stop[kPhi]){
	    iBin = Int_t((dphi-fP2Start[kPhi])/fP2Step[kPhi]);	
	    if(iBin >=0 && iBin < MAXIMUM_NUMBER_OF_STEPS){
	      if((charge1 > 0)&&(charge2 > 0)) {
		fNpp[kPhi][iBin] += 1.;
		fHistPP[kPhi]->Fill(fCentrality,dphi);
	      }
	      if((charge1 < 0)&&(charge2 < 0)) {
		fNnn[kPhi][iBin] += 1.;
		fHistNN[kPhi]->Fill(fCentrality,dphi);
	      }
	      if((charge1 > 0)&&(charge2 < 0)) {
		fNpn[kPhi][iBin] += 1.;
		fHistPN[kPhi]->Fill(fCentrality,dphi);
	      }
	      if((charge1 < 0)&&(charge2 > 0)) {
		fNpn[kPhi][iBin] += 1.;
		fHistPN[kPhi]->Fill(fCentrality,dphi);
	      }
	    }//BF binning check
	  }//p2 interval check
	}//p1 interval check
    }//end of 2nd particle loop
  
 
  }//end of 1st particle loop
  //Printf("Number of analyzed events: %i",fAnalyzedEvents);
  //Printf("DeltaEta NN[0] = %.0f, PP[0] = %.0f, NP[0] = %.0f, PN[0] = %.0f",fNnn[kEta][0],fNpp[kEta][0],fNnp[kEta][0],fNpn[kEta][0]);
}  


//____________________________________________________________________//
Double_t AliBalanceEventMixing::GetBalance(Int_t iAnalysisType, Int_t p2) {
  // Returns the value of the balance function in bin p2
  fB[iAnalysisType][p2] = 0.5*(((fNpn[iAnalysisType][p2] - 2.*fNnn[iAnalysisType][p2])/fNn[iAnalysisType]) + ((fNpn[iAnalysisType][p2] - 2.*fNpp[iAnalysisType][p2])/fNp[iAnalysisType]))/fP2Step[iAnalysisType];
  
  return fB[iAnalysisType][p2];
}
    
//____________________________________________________________________//
Double_t AliBalanceEventMixing::GetError(Int_t iAnalysisType, Int_t p2) {        
  // Returns the error on the BF value for bin p2
  // The errors for fNn and fNp are neglected here (0.1 % of total error)
  /*ferror[iAnalysisType][p2] = TMath::Sqrt(Double_t(fNpp[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType]))
			      + Double_t(fNnn[iAnalysisType][p2])/(Double_t(fNn[iAnalysisType])*Double_t(fNn[iAnalysisType]))
			      + Double_t(fNpn[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType])) 
			      + Double_t(fNnp[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType]))
			      //+ TMath::Power(fNpn[iAnalysisType][p2]-fNpp[iAnalysisType][p2],2)/TMath::Power(Double_t(fNp[iAnalysisType]),3)
			      //+ TMath::Power(fNnp[iAnalysisType][p2]-fNnn[iAnalysisType][p2],2)/TMath::Power(Double_t(fNn[iAnalysisType]),3) 
			       ) /fP2Step[iAnalysisType];*/

  ferror[iAnalysisType][p2] = TMath::Sqrt( Double_t(fNpp[iAnalysisType][p2])/(Double_t(fNp[iAnalysisType])*Double_t(fNp[iAnalysisType])) + 
					   Double_t(fNnn[iAnalysisType][p2])/(Double_t(fNn[iAnalysisType])*Double_t(fNn[iAnalysisType])) + 
					   Double_t(fNpn[iAnalysisType][p2])*TMath::Power((0.5/Double_t(fNp[iAnalysisType]) + 0.5/Double_t(fNn[iAnalysisType])),2))/fP2Step[iAnalysisType];
  
  return ferror[iAnalysisType][p2];
}
//____________________________________________________________________//
TGraphErrors *AliBalanceEventMixing::DrawBalance(Int_t iAnalysisType) {

  // Draws the BF
  Double_t x[MAXIMUM_NUMBER_OF_STEPS];
  Double_t xer[MAXIMUM_NUMBER_OF_STEPS];
  Double_t b[MAXIMUM_NUMBER_OF_STEPS];
  Double_t ber[MAXIMUM_NUMBER_OF_STEPS];

  if((fNp[iAnalysisType] == 0)||(fNn[iAnalysisType] == 0)) {
    cerr<<"Couldn't find any particles in the analyzed interval!!!"<<endl;
    return NULL;
  }
  
  for(Int_t i = 0; i < fNumberOfBins[iAnalysisType]; i++) {
    b[i] = GetBalance(iAnalysisType,i);
    ber[i] = GetError(iAnalysisType,i);
    x[i] = fP2Start[iAnalysisType] + fP2Step[iAnalysisType]*i + fP2Step[iAnalysisType]/2;
    xer[i] = 0.0;
  }
  
  TGraphErrors *gr = new TGraphErrors(fNumberOfBins[iAnalysisType],x,b,xer,ber);
  gr->GetXaxis()->SetTitleColor(1);
  if(iAnalysisType==0) {
    gr->SetTitle("Balance function B(#Delta y)");
    gr->GetXaxis()->SetTitle("#Delta y");
    gr->GetYaxis()->SetTitle("B(#Delta y)");
  }
  if(iAnalysisType==1) {
    gr->SetTitle("Balance function B(#Delta #eta)");
    gr->GetXaxis()->SetTitle("#Delta #eta");
    gr->GetYaxis()->SetTitle("B(#Delta #eta)");
  }
  if(iAnalysisType==2) {
    gr->SetTitle("Balance function B(q_{long})");
    gr->GetXaxis()->SetTitle("q_{long} (GeV/c)");
    gr->GetYaxis()->SetTitle("B(q_{long}) ((GeV/c)^{-1})");
  }
  if(iAnalysisType==3) {
    gr->SetTitle("Balance function B(q_{out})");
    gr->GetXaxis()->SetTitle("q_{out} (GeV/c)");
    gr->GetYaxis()->SetTitle("B(q_{out}) ((GeV/c)^{-1})");
  }
  if(iAnalysisType==4) {
    gr->SetTitle("Balance function B(q_{side})");
    gr->GetXaxis()->SetTitle("q_{side} (GeV/c)");
    gr->GetYaxis()->SetTitle("B(q_{side}) ((GeV/c)^{-1})");
  }
  if(iAnalysisType==5) {
    gr->SetTitle("Balance function B(q_{inv})");
    gr->GetXaxis()->SetTitle("q_{inv} (GeV/c)");
    gr->GetYaxis()->SetTitle("B(q_{inv}) ((GeV/c)^{-1})");
  }
  if(iAnalysisType==6) {
    gr->SetTitle("Balance function B(#Delta #phi)");
    gr->GetXaxis()->SetTitle("#Delta #phi");
    gr->GetYaxis()->SetTitle("B(#Delta #phi)");
  }

  return gr;
}

//____________________________________________________________________//
void AliBalanceEventMixing::PrintResults(Int_t iAnalysisType, TH1D *gHistBalance) {
  //Prints the calculated width of the BF and its error
  Double_t gSumXi = 0.0, gSumBi = 0.0, gSumBiXi = 0.0;
  Double_t gSumBiXi2 = 0.0, gSumBi2Xi2 = 0.0;
  Double_t gSumDeltaBi2 = 0.0, gSumXi2DeltaBi2 = 0.0;
  Double_t deltaBalP2 = 0.0, integral = 0.0;
  Double_t deltaErrorNew = 0.0;
  
  cout<<"=================================================="<<endl;
  for(Int_t i = 1; i <= fNumberOfBins[iAnalysisType]; i++) { 
    //cout<<"B: "<<gHistBalance->GetBinContent(i)<<"\t Error: "<<gHistBalance->GetBinError(i)<<"\t bin: "<<gHistBalance->GetBinCenter(i)<<endl;
  } 
  //cout<<"=================================================="<<endl;
  for(Int_t i = 2; i <= fNumberOfBins[iAnalysisType]; i++) {
    gSumXi += gHistBalance->GetBinCenter(i);
    gSumBi += gHistBalance->GetBinContent(i);
    gSumBiXi += gHistBalance->GetBinContent(i)*gHistBalance->GetBinCenter(i);
    gSumBiXi2 += gHistBalance->GetBinContent(i)*TMath::Power(gHistBalance->GetBinCenter(i),2);
    gSumBi2Xi2 += TMath::Power(gHistBalance->GetBinContent(i),2)*TMath::Power(gHistBalance->GetBinCenter(i),2);
    gSumDeltaBi2 +=  TMath::Power(gHistBalance->GetBinError(i),2);
    gSumXi2DeltaBi2 += TMath::Power(gHistBalance->GetBinCenter(i),2) * TMath::Power(gHistBalance->GetBinError(i),2);
    
    deltaBalP2 += fP2Step[iAnalysisType]*TMath::Power(gHistBalance->GetBinError(i),2);
    integral += fP2Step[iAnalysisType]*gHistBalance->GetBinContent(i);
  }
  for(Int_t i = 1; i < fNumberOfBins[iAnalysisType]; i++)
    deltaErrorNew += gHistBalance->GetBinError(i)*(gHistBalance->GetBinCenter(i)*gSumBi - gSumBiXi)/TMath::Power(gSumBi,2);
  
  Double_t integralError = TMath::Sqrt(deltaBalP2);
  
  Double_t delta = gSumBiXi / gSumBi;
  Double_t deltaError = (gSumBiXi / gSumBi) * TMath::Sqrt(TMath::Power((TMath::Sqrt(gSumXi2DeltaBi2)/gSumBiXi),2) + TMath::Power((gSumDeltaBi2/gSumBi),2) );
  cout<<"Analysis type: "<<kBFAnalysisType[iAnalysisType].Data()<<endl;
  cout<<"Width: "<<delta<<"\t Error: "<<deltaError<<endl;
  cout<<"New error: "<<deltaErrorNew<<endl;
  cout<<"Integral: "<<integral<<"\t Error: "<<integralError<<endl;
  cout<<"=================================================="<<endl;
}
 
//____________________________________________________________________//
TH1D *AliBalanceEventMixing::GetBalanceFunctionHistogram(Int_t iAnalysisType,Double_t centrMin, Double_t centrMax, Double_t etaWindow) {
  //Returns the BF histogram, extracted from the 6 TH2D objects 
  //(private members) of the AliBalanceEventMixing class.
  //
  // Acceptance correction: 
  // - only for analysis type = kEta
  // - only if etaWindow > 0 (default = -1.)
  // - calculated as proposed by STAR 
  //
  TString gAnalysisType[ANALYSIS_TYPES] = {"y","eta","qlong","qout","qside","qinv","phi"};
  TString histName = "gHistBalanceFunctionHistogram";
  histName += gAnalysisType[iAnalysisType];

  SetInterval(iAnalysisType, fHistP[iAnalysisType]->GetYaxis()->GetXmin(),
	      fHistP[iAnalysisType]->GetYaxis()->GetXmin(),
	      fHistPP[iAnalysisType]->GetNbinsY(),
	      fHistPP[iAnalysisType]->GetYaxis()->GetXmin(),
	      fHistPP[iAnalysisType]->GetYaxis()->GetXmax());

  // determine the projection thresholds
  Int_t binMinX, binMinY, binMinZ;
  Int_t binMaxX, binMaxY, binMaxZ;

  fHistPP[iAnalysisType]->GetBinXYZ(fHistPP[iAnalysisType]->FindBin(centrMin),binMinX,binMinY,binMinZ);
  fHistPP[iAnalysisType]->GetBinXYZ(fHistPP[iAnalysisType]->FindBin(centrMax),binMaxX,binMaxY,binMaxZ);

  TH1D *gHistBalanceFunctionHistogram = new TH1D(histName.Data(),"",fHistPP[iAnalysisType]->GetNbinsY(),fHistPP[iAnalysisType]->GetYaxis()->GetXmin(),fHistPP[iAnalysisType]->GetYaxis()->GetXmax());
  switch(iAnalysisType) {
  case kRapidity:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("#Delta y");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(#Delta y)");
    break;
  case kEta:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("#Delta #eta");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(#Delta #eta)");
    break;
  case kQlong:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("q_{long} (GeV/c)");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(q_{long})");
    break;
  case kQout:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("q_{out} (GeV/c)");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(q_{out})");
    break;
  case kQside:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("q_{side} (GeV/c)");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(q_{side})");
    break;
  case kQinv:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("q_{inv} (GeV/c)");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(q_{inv})");
    break;
  case kPhi:
    gHistBalanceFunctionHistogram->GetXaxis()->SetTitle("#Delta #phi (deg.)");
    gHistBalanceFunctionHistogram->GetYaxis()->SetTitle("B(#Delta #phi)");
    break;
  default:
    break;
  }

  TH1D *hTemp1 = dynamic_cast<TH1D *>(fHistPN[iAnalysisType]->ProjectionY(Form("%s_Cent_%.0f_%.0f",fHistPN[iAnalysisType]->GetName(),centrMin,centrMax),binMinX,binMaxX));
  TH1D *hTemp2 = dynamic_cast<TH1D *>(fHistPN[iAnalysisType]->ProjectionY(Form("%s_Cent_%.0f_%.0f_copy",fHistPN[iAnalysisType]->GetName(),centrMin,centrMax),binMinX,binMaxX));
  TH1D *hTemp3 = dynamic_cast<TH1D *>(fHistNN[iAnalysisType]->ProjectionY(Form("%s_Cent_%.0f_%.0f",fHistNN[iAnalysisType]->GetName(),centrMin,centrMax),binMinX,binMaxX));
  TH1D *hTemp4 = dynamic_cast<TH1D *>(fHistPP[iAnalysisType]->ProjectionY(Form("%s_Cent_%.0f_%.0f",fHistPP[iAnalysisType]->GetName(),centrMin,centrMax),binMinX,binMaxX));
  TH1D *hTemp5 = dynamic_cast<TH1D *>(fHistN[iAnalysisType]->ProjectionY(Form("%s_Cent_%.0f_%.0f",fHistN[iAnalysisType]->GetName(),centrMin,centrMax),binMinX,binMaxX));
  TH1D *hTemp6 = dynamic_cast<TH1D *>(fHistP[iAnalysisType]->ProjectionY(Form("%s_Cent_%.0f_%.0f",fHistP[iAnalysisType]->GetName(),centrMin,centrMax),binMinX,binMaxX));

  if((hTemp1)&&(hTemp2)&&(hTemp3)&&(hTemp4)) {
    hTemp1->Sumw2();
    hTemp2->Sumw2();
    hTemp3->Sumw2();
    hTemp4->Sumw2();
    hTemp1->Add(hTemp3,-2.);
    hTemp1->Scale(1./hTemp5->GetEntries());
    hTemp2->Add(hTemp4,-2.);
    hTemp2->Scale(1./hTemp6->GetEntries());
    gHistBalanceFunctionHistogram->Add(hTemp1,hTemp2,1.,1.);
    gHistBalanceFunctionHistogram->Scale(0.5/fP2Step[iAnalysisType]);
  }

  // do the acceptance correction (only for Eta and etaWindow > 0)
  if(iAnalysisType == kEta && etaWindow > 0){
    for(Int_t iBin = 0; iBin < gHistBalanceFunctionHistogram->GetNbinsX(); iBin++){
      
      Double_t notCorrected = gHistBalanceFunctionHistogram->GetBinContent(iBin+1);
      Double_t corrected    = notCorrected / (1 - (gHistBalanceFunctionHistogram->GetBinCenter(iBin+1))/ etaWindow );
      gHistBalanceFunctionHistogram->SetBinContent(iBin+1, corrected);
      
    }
  }
  
  PrintResults(iAnalysisType,gHistBalanceFunctionHistogram);

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