ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/
//
//
// VZERO event plane task for 2010
// Gain equalization + Recentering 
// Need a root file
// 
// Author:
//   Raphaelle Bailhache <R.Bailhache@gsi.de>
//
//

#include "AliHFEVZEROEventPlane.h"

// AliRoot includes
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "AliVEvent.h"
//#include "AliESDEvent.h"
#include "AliCentrality.h"
//#include "AliESDVZERO.h"
#include "AliVVZERO.h"
#include "TFile.h"
#include "AliOADBContainer.h"
#include "TH2F.h"
#include "TF1.h"
#include "TList.h"
#include "TChain.h"
#include "THnSparse.h"
#include "TString.h"
#include "TVector2.h"
#include "AliEventplane.h"


// STL includes
#include <iostream>
using namespace std;


//_____________________________________________________________________________
AliHFEVZEROEventPlane::AliHFEVZEROEventPlane():
  TNamed(),
  fEventPlaneV0A(-100.0),
  fEventPlaneV0C(-100.0),
  fEventPlaneV0(-100.0),
  fESD(0),
  fRun(-1),
  fMultV0(0x0),
  fV0Cpol(100),
  fV0Apol(100),
  fnamefile(TString("")),
  fOutputList(0x0),
  fMultV0Before(0x0),
  fMultV0After(0x0)
{
  //
  // Default constructor (should not be used)
  //

  for(Int_t k = 0; k < fgknCentrBin; k++) {
    for(Int_t iside = 0; iside < 2; iside++) {
      for(Int_t icoord = 0; icoord < 2; icoord++) {
	fQBefore[k][iside][icoord] = 0x0;
	fQAfter[k][iside][icoord] = 0x0;
      }
    }
  }
  
}

//______________________________________________________________________________
AliHFEVZEROEventPlane::AliHFEVZEROEventPlane(const char *name, const Char_t *title):
  TNamed(name,title),
  fEventPlaneV0A(-100.0),
  fEventPlaneV0C(-100.0),
  fEventPlaneV0(-100.0),
  fESD(0),
  fRun(-1),
  fMultV0(0x0),
  fV0Cpol(100),
  fV0Apol(100),
  fnamefile(TString("")),
  fOutputList(0x0),
  fMultV0Before(0x0),
  fMultV0After(0x0)
{
  //
  // Constructor
  //

  TString namelist("QA_hist_");
  namelist += name;
  fOutputList = new TList();
  fOutputList->SetName((const char*)namelist);
  fOutputList->SetOwner(kTRUE);

  // Multiplicity
  fMultV0Before = new TProfile("MultV0Before","",64,0,64);
  fMultV0Before->Sumw2();
  fMultV0After = new TProfile("MultV0After","",64,0,64);
  fMultV0After->Sumw2();
  fOutputList->Add(fMultV0Before);
  fOutputList->Add(fMultV0After);

  // Recentering
  for(Int_t k = 0; k < fgknCentrBin; k++) {
    for(Int_t iside = 0; iside < 2; iside++) {
      for(Int_t icoord = 0; icoord < 2; icoord++) {
	
	TString namecontbefore("");
	TString namecontafter("");
	
	if(iside==0 && icoord==0) {
	  namecontbefore += "hQxc2_";
	  namecontbefore += k;
	}
	else if(iside==1 && icoord==0){
	  namecontbefore += "hQxa2_";
	  namecontbefore += k;
	}
       	else if(iside==0 && icoord==1){
	  namecontbefore += "hQyc2_";
	  namecontbefore += k;	  
	}
	else if(iside==1 && icoord==1) {
	  namecontbefore += "hQya2_";
	  namecontbefore += k;
	}
      	//
	if(iside==0 && icoord==0){
	  namecontafter += "hQxc2_";
	  namecontafter += k;
	  namecontafter += "_after";
	}
      	else if(iside==1 && icoord==0){
	  namecontafter += "hQxa2_";
	  namecontafter += k;
	  namecontafter += "_after";
	}
	else if(iside==0 && icoord==1) {
	  namecontafter += "hQyc2_";
	  namecontafter += k;
	  namecontafter += "_after";
	}
	else if(iside==1 && icoord==1) {
	  namecontafter += "hQya2_";
	  namecontafter += k;
	  namecontafter += "_after";	
	}
	//
	fQBefore[k][iside][icoord] = new TH1F(((const char*)namecontbefore),"",1600,-800.0,800.0);
	fQBefore[k][iside][icoord]->Sumw2();
	fOutputList->Add(fQBefore[k][iside][icoord]);
	fQAfter[k][iside][icoord] = new TH1F(((const char*)namecontafter),"",1600,-800.0,800.0);
	fQAfter[k][iside][icoord]->Sumw2();
	fOutputList->Add(fQAfter[k][iside][icoord]);
	//
      }
    }
  }
  
}
//____________________________________________________________
AliHFEVZEROEventPlane::AliHFEVZEROEventPlane(const AliHFEVZEROEventPlane &ref):
  TNamed(ref),
  fEventPlaneV0A(ref.fEventPlaneV0A),
  fEventPlaneV0C(ref.fEventPlaneV0C),
  fEventPlaneV0(ref.fEventPlaneV0),
  fESD(0),
  fRun(-1),
  fMultV0(0x0),
  fV0Cpol(100),
  fV0Apol(100),
  fnamefile(ref.fnamefile),
  fOutputList(0x0),
  fMultV0Before(0x0),
  fMultV0After(0x0)
{
  //
  // Copy Constructor
  //
  ref.Copy(*this);
}

//____________________________________________________________
AliHFEVZEROEventPlane &AliHFEVZEROEventPlane::operator=(const AliHFEVZEROEventPlane &ref){
  //
  // Assignment operator
  //
  if(this == &ref) 
    ref.Copy(*this);
  return *this;
}

//____________________________________________________________
void AliHFEVZEROEventPlane::Copy(TObject &o) const {
  // 
  // Copy into object o
  //
  AliHFEVZEROEventPlane &target = dynamic_cast<AliHFEVZEROEventPlane &>(o);

  target.fEventPlaneV0A = fEventPlaneV0A;
  target.fEventPlaneV0C = fEventPlaneV0C;
  target.fEventPlaneV0 = fEventPlaneV0;
  target.fnamefile = fnamefile;
  
}

//__________________________________________________________________
AliHFEVZEROEventPlane::~AliHFEVZEROEventPlane(){
  //
  // Destruktor
  //
  if(fOutputList){
    fOutputList->Delete();
    delete fOutputList;
  }
  fOutputList = 0x0;
  
}
//______________________________________________________________________________
void AliHFEVZEROEventPlane::ProcessEvent(AliVEvent *event) 
{
  //
  // Process the event
  // 
  
  // Reset
  fEventPlaneV0A = -100.0;
  fEventPlaneV0C = -100.0;
  fEventPlaneV0  = -100.0;
  
  //
  Int_t run = event->GetRunNumber();
  Bool_t ok = kTRUE;
  if(run != fRun){
    if(fMultV0) delete fMultV0;
    fMultV0 = 0x0;
    // Load the calibrations run dependent
    if(!OpenInfoCalbration(run)) ok = kFALSE;
    fRun=run;
  }

  if(ok) Analyze(event);

}

//________________________________________________________________________
void AliHFEVZEROEventPlane::Analyze(AliVEvent* esdEvent)
{  
  //
  // Do VZERO calibration + centering
  //

  if(!fMultV0) {
    //printf("Did not find calibration VZERO\n");
    return;
  }
  //printf("HERE!!!\n");

  //Centrality
  Float_t v0Centr  = -10.;
  AliCentrality* centrality = esdEvent->GetCentrality();
  if (centrality){
    v0Centr  = centrality->GetCentralityPercentile("V0M");
  }
  
  // Analyse only for 0-80% PbPb collisions
  Int_t iC = -1;    
  if (v0Centr >0 && v0Centr < 80){
    if(v0Centr < 5) iC = 0;
    else if(v0Centr < 10) iC = 1;
    else if(v0Centr < 20) iC = 2;
    else if(v0Centr < 30) iC = 3;
    else if(v0Centr < 40) iC = 4;
    else if(v0Centr < 50) iC = 5;
    else if(v0Centr < 60) iC = 6;
    else if(v0Centr < 70) iC = 7;
    else iC = 8;
    
    //general	
    Double_t qxa2 = 0, qya2 = 0;
    Double_t qxc2 = 0, qyc2 = 0;
    
    //V0 info    
    AliVVZERO* esdV0 = esdEvent->GetVZEROData();
    
    for (Int_t iv0 = 0; iv0 < 64; iv0++) {
      Double_t phiV0 = TMath::PiOver4()*(0.5 + iv0 % 8);
      Float_t multv0 = esdV0->GetMultiplicity(iv0);
      if (iv0 < 32){
	//printf("Value %f\n",fMultV0->GetBinContent(iv0+1));
	if(fMultV0->GetBinContent(iv0+1)>0.0) {
	  qxc2 += TMath::Cos(2*phiV0) * multv0*fV0Cpol/fMultV0->GetBinContent(iv0+1);
	  qyc2 += TMath::Sin(2*phiV0) * multv0*fV0Cpol/fMultV0->GetBinContent(iv0+1);
	  fMultV0After->Fill(iv0,multv0*fV0Cpol/fMultV0->GetBinContent(iv0+1));
	}
      } else {
	if(fMultV0->GetBinContent(iv0+1)>0.0) {
	  qxa2 += TMath::Cos(2*phiV0) * multv0*fV0Apol/fMultV0->GetBinContent(iv0+1);
	  qya2 += TMath::Sin(2*phiV0) * multv0*fV0Apol/fMultV0->GetBinContent(iv0+1);
	  fMultV0After->Fill(iv0,multv0*fV0Apol/fMultV0->GetBinContent(iv0+1));
	}
      }
      fMultV0Before->Fill(iv0,multv0);
    }

    // Fill histos
    fQBefore[iC][1][0] -> Fill(qxa2);
    fQBefore[iC][1][1] -> Fill(qya2);
    fQBefore[iC][0][0] -> Fill(qxc2);
    fQBefore[iC][0][1] -> Fill(qyc2);
    
    //grab for each centrality the proper histo with the Qx and Qy to do the recentering
    Double_t qxamean2 = fMeanQ[iC][1][0];
    Double_t qxarms2  = fWidthQ[iC][1][0];
    Double_t qyamean2 = fMeanQ[iC][1][1];
    Double_t qyarms2  = fWidthQ[iC][1][1];
    
    Double_t qxcmean2 = fMeanQ[iC][0][0];
    Double_t qxcrms2  = fWidthQ[iC][0][0];
    Double_t qycmean2 = fMeanQ[iC][0][1];
    Double_t qycrms2  = fWidthQ[iC][0][1];	

    if((TMath::Abs(qxarms2) < 0.00000001) || (TMath::Abs(qyarms2) < 0.00000001) || (TMath::Abs(qxcrms2) < 0.00000001) || (TMath::Abs(qycrms2) < 0.00000001)) return;    

    Double_t qxaCor2 = (qxa2 - qxamean2)/qxarms2;
    Double_t qyaCor2 = (qya2 - qyamean2)/qyarms2;
    Double_t qxcCor2 = (qxc2 - qxcmean2)/qxcrms2;
    Double_t qycCor2 = (qyc2 - qycmean2)/qycrms2;

    Double_t qxCor2 = qxaCor2 + qxcCor2;
    Double_t qyCor2 = qyaCor2 + qycCor2;

    // Fill histos
    fQAfter[iC][1][0] -> Fill(qxaCor2);
    fQAfter[iC][1][1] -> Fill(qyaCor2);
    fQAfter[iC][0][0] -> Fill(qxcCor2);
    fQAfter[iC][0][1] -> Fill(qycCor2);
    
    Double_t evPlAngV0ACor2 = TVector2::Phi_0_2pi(TMath::ATan2(qyaCor2, qxaCor2))/2.;
    Double_t evPlAngV0CCor2 = TVector2::Phi_0_2pi(TMath::ATan2(qycCor2, qxcCor2))/2.;
    Double_t evPlAngV0Cor2  = TVector2::Phi_0_2pi(TMath::ATan2(qyCor2, qxCor2))/2.;

    fEventPlaneV0A = evPlAngV0ACor2;
    fEventPlaneV0C = evPlAngV0CCor2;
    fEventPlaneV0  = evPlAngV0Cor2;
    
    //printf("Eventplane V0A %f, V0C %f\n",fEventPlaneV0A,fEventPlaneV0C);

  }
}
//_____________________________________________________________________________
Bool_t AliHFEVZEROEventPlane::OpenInfoCalbration(Int_t run)
{
  //
  // Take the calibration coefficients
  //  

  //printf("Name of the file %s\n",(const char*)fnamefile);
 
  TFile *foadb = TFile::Open(fnamefile.Data());
  if(!foadb){
    printf("OADB file %s cannot be opened\n",fnamefile.Data());
    return kFALSE;
  }

  //printf("test\n");

  AliOADBContainer *cont = (AliOADBContainer*) foadb->Get("hMultV0BefCorr");
  if(!cont){
    printf("OADB object hMultV0BefCorr is not available in the file\n");
    return kFALSE;	
  }

  if(!(cont->GetObject(run))){
    printf("OADB object hMultV0BefCorr is not available for run %i\n",run);
    return kFALSE;	
  }
  //TProfile *multV0 = ((TH2F *) cont->GetObject(run))->ProfileX();
  TProfile *multV0 = ((TProfile *) cont->GetObject(run));
  if(!multV0) return kFALSE;
  fMultV0 = (TProfile *) multV0->Clone();
  fMultV0->SetDirectory(0);
  
  TF1 *fpol0 = new TF1("fpol0","pol0"); 
  fMultV0->Fit(fpol0,"Q0","",0,31);
  fV0Cpol = fpol0->GetParameter(0);
  fMultV0->Fit(fpol0,"Q0","",32,64);
  fV0Apol = fpol0->GetParameter(0);
  
  for(Int_t iside=0;iside<2;iside++){
    for(Int_t icoord=0;icoord<2;icoord++){
      for(Int_t i=0;i  < fgknCentrBin;i++){

	TString namecont("");
	if(iside==0 && icoord==0) {
	  namecont += "hQxc2_";
	  namecont += i;
	}
	else if(iside==1 && icoord==0){
	  namecont += "hQxa2_";
	  namecont += i;
	}
	else if(iside==0 && icoord==1){
	  namecont += "hQyc2_";
	  namecont += i;
	}
	else if(iside==1 && icoord==1) {
	  namecont += "hQya2_";
	  namecont += i;
	}
	
	cont = (AliOADBContainer*) foadb->Get(namecont);
	if(!cont){
	  printf("OADB object %s is not available in the file\n",(const char*)namecont);
	  delete fpol0;
	  return kFALSE;	
	}
	
	if(!(cont->GetObject(run))){
	  printf("OADB object %s is not available for run %i\n",(const char*)namecont,run);
	  delete fpol0;
	  return kFALSE;	
	}
	fMeanQ[i][iside][icoord] = ((TH1F *) cont->GetObject(run))->GetMean();
	fWidthQ[i][iside][icoord] = ((TH1F *) cont->GetObject(run))->GetRMS();
      }
    }
  }
  
  delete fpol0;
  foadb->Close();
  
  return kTRUE;

}
 AliHFEVZEROEventPlane.cxx:1
 AliHFEVZEROEventPlane.cxx:2
 AliHFEVZEROEventPlane.cxx:3
 AliHFEVZEROEventPlane.cxx:4
 AliHFEVZEROEventPlane.cxx:5
 AliHFEVZEROEventPlane.cxx:6
 AliHFEVZEROEventPlane.cxx:7
 AliHFEVZEROEventPlane.cxx:8
 AliHFEVZEROEventPlane.cxx:9
 AliHFEVZEROEventPlane.cxx:10
 AliHFEVZEROEventPlane.cxx:11
 AliHFEVZEROEventPlane.cxx:12
 AliHFEVZEROEventPlane.cxx:13
 AliHFEVZEROEventPlane.cxx:14
 AliHFEVZEROEventPlane.cxx:15
 AliHFEVZEROEventPlane.cxx:16
 AliHFEVZEROEventPlane.cxx:17
 AliHFEVZEROEventPlane.cxx:18
 AliHFEVZEROEventPlane.cxx:19
 AliHFEVZEROEventPlane.cxx:20
 AliHFEVZEROEventPlane.cxx:21
 AliHFEVZEROEventPlane.cxx:22
 AliHFEVZEROEventPlane.cxx:23
 AliHFEVZEROEventPlane.cxx:24
 AliHFEVZEROEventPlane.cxx:25
 AliHFEVZEROEventPlane.cxx:26
 AliHFEVZEROEventPlane.cxx:27
 AliHFEVZEROEventPlane.cxx:28
 AliHFEVZEROEventPlane.cxx:29
 AliHFEVZEROEventPlane.cxx:30
 AliHFEVZEROEventPlane.cxx:31
 AliHFEVZEROEventPlane.cxx:32
 AliHFEVZEROEventPlane.cxx:33
 AliHFEVZEROEventPlane.cxx:34
 AliHFEVZEROEventPlane.cxx:35
 AliHFEVZEROEventPlane.cxx:36
 AliHFEVZEROEventPlane.cxx:37
 AliHFEVZEROEventPlane.cxx:38
 AliHFEVZEROEventPlane.cxx:39
 AliHFEVZEROEventPlane.cxx:40
 AliHFEVZEROEventPlane.cxx:41
 AliHFEVZEROEventPlane.cxx:42
 AliHFEVZEROEventPlane.cxx:43
 AliHFEVZEROEventPlane.cxx:44
 AliHFEVZEROEventPlane.cxx:45
 AliHFEVZEROEventPlane.cxx:46
 AliHFEVZEROEventPlane.cxx:47
 AliHFEVZEROEventPlane.cxx:48
 AliHFEVZEROEventPlane.cxx:49
 AliHFEVZEROEventPlane.cxx:50
 AliHFEVZEROEventPlane.cxx:51
 AliHFEVZEROEventPlane.cxx:52
 AliHFEVZEROEventPlane.cxx:53
 AliHFEVZEROEventPlane.cxx:54
 AliHFEVZEROEventPlane.cxx:55
 AliHFEVZEROEventPlane.cxx:56
 AliHFEVZEROEventPlane.cxx:57
 AliHFEVZEROEventPlane.cxx:58
 AliHFEVZEROEventPlane.cxx:59
 AliHFEVZEROEventPlane.cxx:60
 AliHFEVZEROEventPlane.cxx:61
 AliHFEVZEROEventPlane.cxx:62
 AliHFEVZEROEventPlane.cxx:63
 AliHFEVZEROEventPlane.cxx:64
 AliHFEVZEROEventPlane.cxx:65
 AliHFEVZEROEventPlane.cxx:66
 AliHFEVZEROEventPlane.cxx:67
 AliHFEVZEROEventPlane.cxx:68
 AliHFEVZEROEventPlane.cxx:69
 AliHFEVZEROEventPlane.cxx:70
 AliHFEVZEROEventPlane.cxx:71
 AliHFEVZEROEventPlane.cxx:72
 AliHFEVZEROEventPlane.cxx:73
 AliHFEVZEROEventPlane.cxx:74
 AliHFEVZEROEventPlane.cxx:75
 AliHFEVZEROEventPlane.cxx:76
 AliHFEVZEROEventPlane.cxx:77
 AliHFEVZEROEventPlane.cxx:78
 AliHFEVZEROEventPlane.cxx:79
 AliHFEVZEROEventPlane.cxx:80
 AliHFEVZEROEventPlane.cxx:81
 AliHFEVZEROEventPlane.cxx:82
 AliHFEVZEROEventPlane.cxx:83
 AliHFEVZEROEventPlane.cxx:84
 AliHFEVZEROEventPlane.cxx:85
 AliHFEVZEROEventPlane.cxx:86
 AliHFEVZEROEventPlane.cxx:87
 AliHFEVZEROEventPlane.cxx:88
 AliHFEVZEROEventPlane.cxx:89
 AliHFEVZEROEventPlane.cxx:90
 AliHFEVZEROEventPlane.cxx:91
 AliHFEVZEROEventPlane.cxx:92
 AliHFEVZEROEventPlane.cxx:93
 AliHFEVZEROEventPlane.cxx:94
 AliHFEVZEROEventPlane.cxx:95
 AliHFEVZEROEventPlane.cxx:96
 AliHFEVZEROEventPlane.cxx:97
 AliHFEVZEROEventPlane.cxx:98
 AliHFEVZEROEventPlane.cxx:99
 AliHFEVZEROEventPlane.cxx:100
 AliHFEVZEROEventPlane.cxx:101
 AliHFEVZEROEventPlane.cxx:102
 AliHFEVZEROEventPlane.cxx:103
 AliHFEVZEROEventPlane.cxx:104
 AliHFEVZEROEventPlane.cxx:105
 AliHFEVZEROEventPlane.cxx:106
 AliHFEVZEROEventPlane.cxx:107
 AliHFEVZEROEventPlane.cxx:108
 AliHFEVZEROEventPlane.cxx:109
 AliHFEVZEROEventPlane.cxx:110
 AliHFEVZEROEventPlane.cxx:111
 AliHFEVZEROEventPlane.cxx:112
 AliHFEVZEROEventPlane.cxx:113
 AliHFEVZEROEventPlane.cxx:114
 AliHFEVZEROEventPlane.cxx:115
 AliHFEVZEROEventPlane.cxx:116
 AliHFEVZEROEventPlane.cxx:117
 AliHFEVZEROEventPlane.cxx:118
 AliHFEVZEROEventPlane.cxx:119
 AliHFEVZEROEventPlane.cxx:120
 AliHFEVZEROEventPlane.cxx:121
 AliHFEVZEROEventPlane.cxx:122
 AliHFEVZEROEventPlane.cxx:123
 AliHFEVZEROEventPlane.cxx:124
 AliHFEVZEROEventPlane.cxx:125
 AliHFEVZEROEventPlane.cxx:126
 AliHFEVZEROEventPlane.cxx:127
 AliHFEVZEROEventPlane.cxx:128
 AliHFEVZEROEventPlane.cxx:129
 AliHFEVZEROEventPlane.cxx:130
 AliHFEVZEROEventPlane.cxx:131
 AliHFEVZEROEventPlane.cxx:132
 AliHFEVZEROEventPlane.cxx:133
 AliHFEVZEROEventPlane.cxx:134
 AliHFEVZEROEventPlane.cxx:135
 AliHFEVZEROEventPlane.cxx:136
 AliHFEVZEROEventPlane.cxx:137
 AliHFEVZEROEventPlane.cxx:138
 AliHFEVZEROEventPlane.cxx:139
 AliHFEVZEROEventPlane.cxx:140
 AliHFEVZEROEventPlane.cxx:141
 AliHFEVZEROEventPlane.cxx:142
 AliHFEVZEROEventPlane.cxx:143
 AliHFEVZEROEventPlane.cxx:144
 AliHFEVZEROEventPlane.cxx:145
 AliHFEVZEROEventPlane.cxx:146
 AliHFEVZEROEventPlane.cxx:147
 AliHFEVZEROEventPlane.cxx:148
 AliHFEVZEROEventPlane.cxx:149
 AliHFEVZEROEventPlane.cxx:150
 AliHFEVZEROEventPlane.cxx:151
 AliHFEVZEROEventPlane.cxx:152
 AliHFEVZEROEventPlane.cxx:153
 AliHFEVZEROEventPlane.cxx:154
 AliHFEVZEROEventPlane.cxx:155
 AliHFEVZEROEventPlane.cxx:156
 AliHFEVZEROEventPlane.cxx:157
 AliHFEVZEROEventPlane.cxx:158
 AliHFEVZEROEventPlane.cxx:159
 AliHFEVZEROEventPlane.cxx:160
 AliHFEVZEROEventPlane.cxx:161
 AliHFEVZEROEventPlane.cxx:162
 AliHFEVZEROEventPlane.cxx:163
 AliHFEVZEROEventPlane.cxx:164
 AliHFEVZEROEventPlane.cxx:165
 AliHFEVZEROEventPlane.cxx:166
 AliHFEVZEROEventPlane.cxx:167
 AliHFEVZEROEventPlane.cxx:168
 AliHFEVZEROEventPlane.cxx:169
 AliHFEVZEROEventPlane.cxx:170
 AliHFEVZEROEventPlane.cxx:171
 AliHFEVZEROEventPlane.cxx:172
 AliHFEVZEROEventPlane.cxx:173
 AliHFEVZEROEventPlane.cxx:174
 AliHFEVZEROEventPlane.cxx:175
 AliHFEVZEROEventPlane.cxx:176
 AliHFEVZEROEventPlane.cxx:177
 AliHFEVZEROEventPlane.cxx:178
 AliHFEVZEROEventPlane.cxx:179
 AliHFEVZEROEventPlane.cxx:180
 AliHFEVZEROEventPlane.cxx:181
 AliHFEVZEROEventPlane.cxx:182
 AliHFEVZEROEventPlane.cxx:183
 AliHFEVZEROEventPlane.cxx:184
 AliHFEVZEROEventPlane.cxx:185
 AliHFEVZEROEventPlane.cxx:186
 AliHFEVZEROEventPlane.cxx:187
 AliHFEVZEROEventPlane.cxx:188
 AliHFEVZEROEventPlane.cxx:189
 AliHFEVZEROEventPlane.cxx:190
 AliHFEVZEROEventPlane.cxx:191
 AliHFEVZEROEventPlane.cxx:192
 AliHFEVZEROEventPlane.cxx:193
 AliHFEVZEROEventPlane.cxx:194
 AliHFEVZEROEventPlane.cxx:195
 AliHFEVZEROEventPlane.cxx:196
 AliHFEVZEROEventPlane.cxx:197
 AliHFEVZEROEventPlane.cxx:198
 AliHFEVZEROEventPlane.cxx:199
 AliHFEVZEROEventPlane.cxx:200
 AliHFEVZEROEventPlane.cxx:201
 AliHFEVZEROEventPlane.cxx:202
 AliHFEVZEROEventPlane.cxx:203
 AliHFEVZEROEventPlane.cxx:204
 AliHFEVZEROEventPlane.cxx:205
 AliHFEVZEROEventPlane.cxx:206
 AliHFEVZEROEventPlane.cxx:207
 AliHFEVZEROEventPlane.cxx:208
 AliHFEVZEROEventPlane.cxx:209
 AliHFEVZEROEventPlane.cxx:210
 AliHFEVZEROEventPlane.cxx:211
 AliHFEVZEROEventPlane.cxx:212
 AliHFEVZEROEventPlane.cxx:213
 AliHFEVZEROEventPlane.cxx:214
 AliHFEVZEROEventPlane.cxx:215
 AliHFEVZEROEventPlane.cxx:216
 AliHFEVZEROEventPlane.cxx:217
 AliHFEVZEROEventPlane.cxx:218
 AliHFEVZEROEventPlane.cxx:219
 AliHFEVZEROEventPlane.cxx:220
 AliHFEVZEROEventPlane.cxx:221
 AliHFEVZEROEventPlane.cxx:222
 AliHFEVZEROEventPlane.cxx:223
 AliHFEVZEROEventPlane.cxx:224
 AliHFEVZEROEventPlane.cxx:225
 AliHFEVZEROEventPlane.cxx:226
 AliHFEVZEROEventPlane.cxx:227
 AliHFEVZEROEventPlane.cxx:228
 AliHFEVZEROEventPlane.cxx:229
 AliHFEVZEROEventPlane.cxx:230
 AliHFEVZEROEventPlane.cxx:231
 AliHFEVZEROEventPlane.cxx:232
 AliHFEVZEROEventPlane.cxx:233
 AliHFEVZEROEventPlane.cxx:234
 AliHFEVZEROEventPlane.cxx:235
 AliHFEVZEROEventPlane.cxx:236
 AliHFEVZEROEventPlane.cxx:237
 AliHFEVZEROEventPlane.cxx:238
 AliHFEVZEROEventPlane.cxx:239
 AliHFEVZEROEventPlane.cxx:240
 AliHFEVZEROEventPlane.cxx:241
 AliHFEVZEROEventPlane.cxx:242
 AliHFEVZEROEventPlane.cxx:243
 AliHFEVZEROEventPlane.cxx:244
 AliHFEVZEROEventPlane.cxx:245
 AliHFEVZEROEventPlane.cxx:246
 AliHFEVZEROEventPlane.cxx:247
 AliHFEVZEROEventPlane.cxx:248
 AliHFEVZEROEventPlane.cxx:249
 AliHFEVZEROEventPlane.cxx:250
 AliHFEVZEROEventPlane.cxx:251
 AliHFEVZEROEventPlane.cxx:252
 AliHFEVZEROEventPlane.cxx:253
 AliHFEVZEROEventPlane.cxx:254
 AliHFEVZEROEventPlane.cxx:255
 AliHFEVZEROEventPlane.cxx:256
 AliHFEVZEROEventPlane.cxx:257
 AliHFEVZEROEventPlane.cxx:258
 AliHFEVZEROEventPlane.cxx:259
 AliHFEVZEROEventPlane.cxx:260
 AliHFEVZEROEventPlane.cxx:261
 AliHFEVZEROEventPlane.cxx:262
 AliHFEVZEROEventPlane.cxx:263
 AliHFEVZEROEventPlane.cxx:264
 AliHFEVZEROEventPlane.cxx:265
 AliHFEVZEROEventPlane.cxx:266
 AliHFEVZEROEventPlane.cxx:267
 AliHFEVZEROEventPlane.cxx:268
 AliHFEVZEROEventPlane.cxx:269
 AliHFEVZEROEventPlane.cxx:270
 AliHFEVZEROEventPlane.cxx:271
 AliHFEVZEROEventPlane.cxx:272
 AliHFEVZEROEventPlane.cxx:273
 AliHFEVZEROEventPlane.cxx:274
 AliHFEVZEROEventPlane.cxx:275
 AliHFEVZEROEventPlane.cxx:276
 AliHFEVZEROEventPlane.cxx:277
 AliHFEVZEROEventPlane.cxx:278
 AliHFEVZEROEventPlane.cxx:279
 AliHFEVZEROEventPlane.cxx:280
 AliHFEVZEROEventPlane.cxx:281
 AliHFEVZEROEventPlane.cxx:282
 AliHFEVZEROEventPlane.cxx:283
 AliHFEVZEROEventPlane.cxx:284
 AliHFEVZEROEventPlane.cxx:285
 AliHFEVZEROEventPlane.cxx:286
 AliHFEVZEROEventPlane.cxx:287
 AliHFEVZEROEventPlane.cxx:288
 AliHFEVZEROEventPlane.cxx:289
 AliHFEVZEROEventPlane.cxx:290
 AliHFEVZEROEventPlane.cxx:291
 AliHFEVZEROEventPlane.cxx:292
 AliHFEVZEROEventPlane.cxx:293
 AliHFEVZEROEventPlane.cxx:294
 AliHFEVZEROEventPlane.cxx:295
 AliHFEVZEROEventPlane.cxx:296
 AliHFEVZEROEventPlane.cxx:297
 AliHFEVZEROEventPlane.cxx:298
 AliHFEVZEROEventPlane.cxx:299
 AliHFEVZEROEventPlane.cxx:300
 AliHFEVZEROEventPlane.cxx:301
 AliHFEVZEROEventPlane.cxx:302
 AliHFEVZEROEventPlane.cxx:303
 AliHFEVZEROEventPlane.cxx:304
 AliHFEVZEROEventPlane.cxx:305
 AliHFEVZEROEventPlane.cxx:306
 AliHFEVZEROEventPlane.cxx:307
 AliHFEVZEROEventPlane.cxx:308
 AliHFEVZEROEventPlane.cxx:309
 AliHFEVZEROEventPlane.cxx:310
 AliHFEVZEROEventPlane.cxx:311
 AliHFEVZEROEventPlane.cxx:312
 AliHFEVZEROEventPlane.cxx:313
 AliHFEVZEROEventPlane.cxx:314
 AliHFEVZEROEventPlane.cxx:315
 AliHFEVZEROEventPlane.cxx:316
 AliHFEVZEROEventPlane.cxx:317
 AliHFEVZEROEventPlane.cxx:318
 AliHFEVZEROEventPlane.cxx:319
 AliHFEVZEROEventPlane.cxx:320
 AliHFEVZEROEventPlane.cxx:321
 AliHFEVZEROEventPlane.cxx:322
 AliHFEVZEROEventPlane.cxx:323
 AliHFEVZEROEventPlane.cxx:324
 AliHFEVZEROEventPlane.cxx:325
 AliHFEVZEROEventPlane.cxx:326
 AliHFEVZEROEventPlane.cxx:327
 AliHFEVZEROEventPlane.cxx:328
 AliHFEVZEROEventPlane.cxx:329
 AliHFEVZEROEventPlane.cxx:330
 AliHFEVZEROEventPlane.cxx:331
 AliHFEVZEROEventPlane.cxx:332
 AliHFEVZEROEventPlane.cxx:333
 AliHFEVZEROEventPlane.cxx:334
 AliHFEVZEROEventPlane.cxx:335
 AliHFEVZEROEventPlane.cxx:336
 AliHFEVZEROEventPlane.cxx:337
 AliHFEVZEROEventPlane.cxx:338
 AliHFEVZEROEventPlane.cxx:339
 AliHFEVZEROEventPlane.cxx:340
 AliHFEVZEROEventPlane.cxx:341
 AliHFEVZEROEventPlane.cxx:342
 AliHFEVZEROEventPlane.cxx:343
 AliHFEVZEROEventPlane.cxx:344
 AliHFEVZEROEventPlane.cxx:345
 AliHFEVZEROEventPlane.cxx:346
 AliHFEVZEROEventPlane.cxx:347
 AliHFEVZEROEventPlane.cxx:348
 AliHFEVZEROEventPlane.cxx:349
 AliHFEVZEROEventPlane.cxx:350
 AliHFEVZEROEventPlane.cxx:351
 AliHFEVZEROEventPlane.cxx:352
 AliHFEVZEROEventPlane.cxx:353
 AliHFEVZEROEventPlane.cxx:354
 AliHFEVZEROEventPlane.cxx:355
 AliHFEVZEROEventPlane.cxx:356
 AliHFEVZEROEventPlane.cxx:357
 AliHFEVZEROEventPlane.cxx:358
 AliHFEVZEROEventPlane.cxx:359
 AliHFEVZEROEventPlane.cxx:360
 AliHFEVZEROEventPlane.cxx:361
 AliHFEVZEROEventPlane.cxx:362
 AliHFEVZEROEventPlane.cxx:363
 AliHFEVZEROEventPlane.cxx:364
 AliHFEVZEROEventPlane.cxx:365
 AliHFEVZEROEventPlane.cxx:366
 AliHFEVZEROEventPlane.cxx:367
 AliHFEVZEROEventPlane.cxx:368
 AliHFEVZEROEventPlane.cxx:369
 AliHFEVZEROEventPlane.cxx:370
 AliHFEVZEROEventPlane.cxx:371
 AliHFEVZEROEventPlane.cxx:372
 AliHFEVZEROEventPlane.cxx:373
 AliHFEVZEROEventPlane.cxx:374
 AliHFEVZEROEventPlane.cxx:375
 AliHFEVZEROEventPlane.cxx:376
 AliHFEVZEROEventPlane.cxx:377
 AliHFEVZEROEventPlane.cxx:378
 AliHFEVZEROEventPlane.cxx:379
 AliHFEVZEROEventPlane.cxx:380
 AliHFEVZEROEventPlane.cxx:381
 AliHFEVZEROEventPlane.cxx:382
 AliHFEVZEROEventPlane.cxx:383
 AliHFEVZEROEventPlane.cxx:384
 AliHFEVZEROEventPlane.cxx:385
 AliHFEVZEROEventPlane.cxx:386
 AliHFEVZEROEventPlane.cxx:387
 AliHFEVZEROEventPlane.cxx:388
 AliHFEVZEROEventPlane.cxx:389
 AliHFEVZEROEventPlane.cxx:390
 AliHFEVZEROEventPlane.cxx:391
 AliHFEVZEROEventPlane.cxx:392
 AliHFEVZEROEventPlane.cxx:393
 AliHFEVZEROEventPlane.cxx:394
 AliHFEVZEROEventPlane.cxx:395
 AliHFEVZEROEventPlane.cxx:396
 AliHFEVZEROEventPlane.cxx:397
 AliHFEVZEROEventPlane.cxx:398
 AliHFEVZEROEventPlane.cxx:399
 AliHFEVZEROEventPlane.cxx:400
 AliHFEVZEROEventPlane.cxx:401
 AliHFEVZEROEventPlane.cxx:402
 AliHFEVZEROEventPlane.cxx:403
 AliHFEVZEROEventPlane.cxx:404
 AliHFEVZEROEventPlane.cxx:405
 AliHFEVZEROEventPlane.cxx:406
 AliHFEVZEROEventPlane.cxx:407
 AliHFEVZEROEventPlane.cxx:408
 AliHFEVZEROEventPlane.cxx:409
 AliHFEVZEROEventPlane.cxx:410
 AliHFEVZEROEventPlane.cxx:411
 AliHFEVZEROEventPlane.cxx:412
 AliHFEVZEROEventPlane.cxx:413
 AliHFEVZEROEventPlane.cxx:414
 AliHFEVZEROEventPlane.cxx:415
 AliHFEVZEROEventPlane.cxx:416
 AliHFEVZEROEventPlane.cxx:417
 AliHFEVZEROEventPlane.cxx:418
 AliHFEVZEROEventPlane.cxx:419
 AliHFEVZEROEventPlane.cxx:420
 AliHFEVZEROEventPlane.cxx:421
 AliHFEVZEROEventPlane.cxx:422
 AliHFEVZEROEventPlane.cxx:423
 AliHFEVZEROEventPlane.cxx:424
 AliHFEVZEROEventPlane.cxx:425
 AliHFEVZEROEventPlane.cxx:426
 AliHFEVZEROEventPlane.cxx:427
 AliHFEVZEROEventPlane.cxx:428
 AliHFEVZEROEventPlane.cxx:429
 AliHFEVZEROEventPlane.cxx:430
 AliHFEVZEROEventPlane.cxx:431
 AliHFEVZEROEventPlane.cxx:432
 AliHFEVZEROEventPlane.cxx:433
 AliHFEVZEROEventPlane.cxx:434
 AliHFEVZEROEventPlane.cxx:435
 AliHFEVZEROEventPlane.cxx:436
 AliHFEVZEROEventPlane.cxx:437
 AliHFEVZEROEventPlane.cxx:438
 AliHFEVZEROEventPlane.cxx:439
 AliHFEVZEROEventPlane.cxx:440
 AliHFEVZEROEventPlane.cxx:441
 AliHFEVZEROEventPlane.cxx:442
 AliHFEVZEROEventPlane.cxx:443
 AliHFEVZEROEventPlane.cxx:444
 AliHFEVZEROEventPlane.cxx:445
 AliHFEVZEROEventPlane.cxx:446
 AliHFEVZEROEventPlane.cxx:447
 AliHFEVZEROEventPlane.cxx:448
 AliHFEVZEROEventPlane.cxx:449
 AliHFEVZEROEventPlane.cxx:450