ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2008, 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.                  *
 **************************************************************************/

//*****************************************************
//   Class AliEPSelectionTask
//   Class to determine event plane            
//   author: Alberica Toia, Johanna Gramling
//*****************************************************

#include "AliEPSelectionTask.h"

#include <TTree.h>
#include <TList.h>
#include <TH1F.h>
#include <TH2F.h>
#include <THnSparse.h>
#include <TProfile.h>
#include <TFile.h>
#include <TObjString.h>
#include <TString.h>
#include <TCanvas.h>
#include <TROOT.h>
#include <TDirectory.h>
#include <TSystem.h>
#include <iostream>
#include <TRandom2.h>
#include <TArrayF.h>

#include "AliAnalysisManager.h"
#include "AliVEvent.h"
#include "AliESD.h"
#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliESDtrack.h"
#include "AliESDtrackCuts.h"
#include "AliESDHeader.h"
#include "AliESDInputHandler.h"
#include "AliAODHandler.h"
#include "AliAODEvent.h"
#include "AliHeader.h"
#include "AliGenHijingEventHeader.h"
#include "AliAnalysisTaskSE.h"
#include "AliPhysicsSelectionTask.h"
#include "AliPhysicsSelection.h"
#include "AliBackgroundSelection.h"
#include "AliESDUtils.h"
#include "AliOADBContainer.h"
#include "AliAODMCHeader.h"
#include "AliAODTrack.h"
#include "AliVTrack.h"
#include "AliEventplane.h"

using std::cout;
using std::endl;
ClassImp(AliEPSelectionTask)

//________________________________________________________________________
AliEPSelectionTask::AliEPSelectionTask():
AliAnalysisTaskSE(),
  fAnalysisInput("ESD"),
  fTrackType("TPC"),
  fPeriod(""),
  fCentrality(-1.),
  fUseMCRP(kFALSE),
  fUsePhiWeight(kFALSE),
  fUsePtWeight(kFALSE),
  fUseRecentering(kFALSE),
  fSaveTrackContribution(kFALSE),
  fUserphidist(kFALSE),
  fUsercuts(kFALSE),
  fRunNumber(-15),
  fAODfilterbit(1),
  fEtaGap(0.),
  fSplitMethod(0),
  fESDtrackCuts(0),
  fEPContainer(0),
  fQxContainer(0),
  fQyContainer(0),
  fSparseDist(0),
  fHruns(0),
  fQVector(0),
  fQContributionX(0),
  fQContributionY(0),
  fEventplaneQ(0),
  fQsub1(0),
  fQsub2(0),
  fQsubRes(0),  
  fOutputList(0),
  fHOutEventplaneQ(0),
  fHOutPhi(0),
  fHOutPhiCorr(0),
  fHOutsub1sub2(0),
  fHOutNTEPRes(0),
  fHOutPTPsi(0),
  fHOutDiff(0),
  fHOutleadPTPsi(0)
{   
  // Default constructor
  AliInfo("Event Plane Selection enabled.");
  for(Int_t i = 0; i < 4; ++i) {
     fPhiDist[i] = 0;
  }
  for(Int_t i = 0; i < 2; ++i) {
     fQDist[i] = 0;
  }
}

//________________________________________________________________________
AliEPSelectionTask::AliEPSelectionTask(const char *name):
  AliAnalysisTaskSE(name),
  fAnalysisInput("ESD"),
  fTrackType("TPC"),
  fPeriod(""),
  fCentrality(-1.),
  fUseMCRP(kFALSE),
  fUsePhiWeight(kFALSE),
  fUsePtWeight(kFALSE),  
  fUseRecentering(kFALSE),
  fSaveTrackContribution(kFALSE),
  fUserphidist(kFALSE),
  fUsercuts(kFALSE),
  fRunNumber(-15),
  fAODfilterbit(1),
  fEtaGap(0.),
  fSplitMethod(0),
  fESDtrackCuts(0),
  fEPContainer(0),
  fQxContainer(0),
  fQyContainer(0),
  fSparseDist(0),
  fHruns(0),
  fQVector(0),
  fQContributionX(0),
  fQContributionY(0),
  fEventplaneQ(0),
  fQsub1(0),
  fQsub2(0),
  fQsubRes(0),
  fOutputList(0),
  fHOutEventplaneQ(0),
  fHOutPhi(0),
  fHOutPhiCorr(0),
  fHOutsub1sub2(0),
  fHOutNTEPRes(0),
  fHOutPTPsi(0),
  fHOutDiff(0),
  fHOutleadPTPsi(0)
{
  // Default constructor
  AliInfo("Event Plane Selection enabled.");
  DefineOutput(1, TList::Class());
  for(Int_t i = 0; i < 4; i++) {
     fPhiDist[i] = 0;
  }
  for(Int_t i = 0; i < 2; ++i) {
     fQDist[i] = 0;
  }
}
 
//________________________________________________________________________
AliEPSelectionTask::~AliEPSelectionTask()
{
  // Destructor  
  if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
      delete fOutputList;
      fOutputList = 0;
  }
  if (fESDtrackCuts){
      delete fESDtrackCuts;
      fESDtrackCuts = 0;
  }
  if (fUserphidist) {
    if (fPhiDist[0]) {
      delete fPhiDist[0];
      fPhiDist[0] = 0;
    }
  }
  if (fEPContainer){
      delete fEPContainer;
      fEPContainer = 0;
  }
  if (fPeriod.CompareTo("LHC11h")==0){
      for(Int_t i = 0; i < 4; i++) {
        if(fPhiDist[i]){
          delete fPhiDist[i];
          fPhiDist[i] = 0;
        }
      }
      if(fHruns) delete fHruns;
  }
  if(fQDist[0] && fQDist[1]) {
    for(Int_t i = 0; i < 2; i++) {
      if(fQDist[i]){
	delete fQDist[i];
	fQDist[i] = 0;
      }
    }
  }
}  

//________________________________________________________________________
void AliEPSelectionTask::UserCreateOutputObjects()
{  
  // Create the output containers
  if (fDebug>1) printf("AliEPSelectionTask::UserCreateOutputObjects() \n");
  AliLog::SetClassDebugLevel("AliEPSelectionTask", AliLog::kInfo);

  fOutputList = new TList();
  fOutputList->SetOwner();
  fHOutEventplaneQ = new TH1F("fHOutEventplaneQ","fHOutEventplaneQ; Event Plane Q",100,0,TMath::Pi());
  fHOutPhi = new TH1F("fHOutPhi","fHOutPhi; Phi Distribution",100,0,TMath::TwoPi());
  fHOutPhiCorr = new TH1F("fHOutPhiCorr","fHOutPhiCorr; Corrected Phi Distribution",100,0,TMath::TwoPi());
  fHOutsub1sub2 = new TH2F("fHOutsub1sub2","fHOutsub1sub2; EP1; EP2",100,0,TMath::Pi(),100,0,TMath::Pi());
  fHOutNTEPRes = new TH2F("fHOutNTEPRes","fHOutNTEPRes; Number of Tracks; Event Plane Resolution",100,0,5000,100,-TMath::Pi(),TMath::Pi());
  fHOutPTPsi = new TH2F("fHOutPTPsi","fHOutPTPsi; PT; Phi-EP",100,0,20,100,0,TMath::Pi());
  fHOutDiff = new TH2F("fHOutDiff","fHOutDiff; EP; MCEP",100,0,TMath::Pi(),100,0,TMath::Pi());
  fHOutleadPTPsi = new TH2F("fHOutleadPTPsi","fHOutleadPTPsi; leadPT; EP",100,0,TMath::Pi(),100,0,TMath::Pi());

  fOutputList->Add(fHOutEventplaneQ);
  fOutputList->Add(fHOutPhi);
  fOutputList->Add(fHOutPhiCorr);
  fOutputList->Add(fHOutsub1sub2);
  fOutputList->Add(fHOutNTEPRes);
  fOutputList->Add(fHOutPTPsi);
  fOutputList->Add(fHOutleadPTPsi);
  fOutputList->Add(fHOutDiff);
  
  PostData(1, fOutputList); 


}

//________________________________________________________________________
void AliEPSelectionTask::UserExec(Option_t */*option*/)
{ 
  // Execute analysis for current event:
  if (fDebug>1) printf(" **** AliEPSelectionTask::UserExec() \n");
  
//   fRunNumber = -15;
 
  AliEventplane *esdEP;
  TVector2 qq1;
  TVector2 qq2;
  Double_t fRP = 0.; // monte carlo reaction plane angle
    
  if (fAnalysisInput.CompareTo("ESD")==0){

    AliVEvent* event = InputEvent();
    AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
    if (esd){    
      if (!(fRunNumber == esd->GetRunNumber())) {
	  fRunNumber = esd->GetRunNumber();
          AliInfo(Form("Changing Phi-distribution to run %d",fRunNumber));
          SetOADBandPeriod();
	  SetPhiDist();      
	  SetQvectorDist(); // recentring objects
      }
      
      
      if (fUseMCRP) {
	  AliMCEvent* mcEvent  = MCEvent();      
	  if (mcEvent && mcEvent->GenEventHeader()) {
	      AliGenHijingEventHeader* headerH = dynamic_cast<AliGenHijingEventHeader*>(mcEvent->GenEventHeader());
	      if (headerH) fRP = headerH->ReactionPlaneAngle();
	  }
      }
      
      esdEP = esd->GetEventplane();
      if (fSaveTrackContribution) {
	esdEP->GetQContributionXArray()->Set(esd->GetNumberOfTracks());
	esdEP->GetQContributionYArray()->Set(esd->GetNumberOfTracks());
        esdEP->GetQContributionXArraysub1()->Set(esd->GetNumberOfTracks());
	esdEP->GetQContributionYArraysub1()->Set(esd->GetNumberOfTracks());
        esdEP->GetQContributionXArraysub2()->Set(esd->GetNumberOfTracks());
	esdEP->GetQContributionYArraysub2()->Set(esd->GetNumberOfTracks());
      }
      
      TObjArray* tracklist = new TObjArray;
      if (fTrackType.CompareTo("GLOBAL")==0) tracklist = fESDtrackCuts->GetAcceptedTracks(esd,kFALSE);
      if (fTrackType.CompareTo("TPC")==0 && fPeriod.CompareTo("LHC10h")==0) tracklist = fESDtrackCuts->GetAcceptedTracks(esd,kTRUE);
      else if (fTrackType.CompareTo("TPC")==0 && fPeriod.CompareTo("LHC11h")==0) tracklist = GetTracksForLHC11h(esd);
      const int nt = tracklist->GetEntries();
      
      if (nt>4){

	// qvector full event
	fQVector = new TVector2(GetQ(esdEP,tracklist));
	fEventplaneQ = fQVector->Phi()/2; 
	// q vector subevents
	GetQsub(qq1, qq2, tracklist, esdEP);
	fQsub1 = new TVector2(qq1);
	fQsub2 = new TVector2(qq2);
	fQsubRes = (fQsub1->Phi()/2 - fQsub2->Phi()/2);
	
	esdEP->SetQVector(fQVector);
	esdEP->SetEventplaneQ(fEventplaneQ);
	esdEP->SetQsub(fQsub1,fQsub2);
	esdEP->SetQsubRes(fQsubRes);
	
	fHOutEventplaneQ->Fill(fEventplaneQ);
	fHOutsub1sub2->Fill(fQsub1->Phi()/2,fQsub2->Phi()/2);
	fHOutNTEPRes->Fill(nt,fQsubRes);

	if (fUseMCRP) fHOutDiff->Fill(fEventplaneQ, fRP);
	
	for (int iter = 0; iter<nt;iter++){
	  AliESDtrack* track = dynamic_cast<AliESDtrack*> (tracklist->At(iter));
	  if (track) {
	    float delta = track->Phi()-fEventplaneQ;
	    while (delta < 0) delta += TMath::Pi();
	    while (delta > TMath::Pi()) delta -= TMath::Pi();
	    fHOutPTPsi->Fill(track->Pt(),delta);
	    fHOutPhi->Fill(track->Phi());
	    fHOutPhiCorr->Fill(track->Phi(),GetPhiWeight(track)); 
          }
	}
	
	AliESDtrack* trmax = esd->GetTrack(0);
	for (int iter = 1; iter<nt;iter++){
	  AliESDtrack* track = dynamic_cast<AliESDtrack*> (tracklist->At(iter));
	  if (track && (track->Pt() > trmax->Pt())) trmax = track;
	}
	fHOutleadPTPsi->Fill(trmax->Phi(),fEventplaneQ);      
      }
      tracklist->Clear();
      delete tracklist;
      tracklist = 0;
    }
  }
  
    else if (fAnalysisInput.CompareTo("AOD")==0){
    AliVEvent* event = InputEvent();
    AliAODEvent* aod = dynamic_cast<AliAODEvent*>(event);

    if (aod){

      // get centrality of the event
      AliAODHeader *header=dynamic_cast<AliAODHeader*>(aod->GetHeader());
      if(!header) AliFatal("Not a standard AOD");
      AliCentrality *centrality=header->GetCentralityP();
      if(!centrality)  AliError(Form("No AliCentrality attached to AOD header"));
      fCentrality = centrality->GetCentralityPercentile("V0M");

      if (!(fRunNumber == aod->GetRunNumber())) {
        fRunNumber = aod->GetRunNumber();
        AliInfo(Form("Changing Phi-distribution to run %d",fRunNumber));
        SetOADBandPeriod();
        SetPhiDist();
        SetQvectorDist();
      }

      if (fUseMCRP) {
	AliAODMCHeader *headerH = dynamic_cast<AliAODMCHeader*>(aod->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
	if (headerH) fRP = headerH->GetReactionPlaneAngle();
      }
  
      esdEP = header->GetEventplaneP();
      if(!esdEP) return; // protection against missing EP branch (nanoAODs)
      esdEP->Reset(); 
     
      Int_t maxID = 0;
      TObjArray* tracklist = GetAODTracksAndMaxID(aod,maxID);
	
      if (fSaveTrackContribution) {
	esdEP->GetQContributionXArray()->Set(maxID+1);
	esdEP->GetQContributionYArray()->Set(maxID+1);
	esdEP->GetQContributionXArraysub1()->Set(maxID+1);
	esdEP->GetQContributionYArraysub1()->Set(maxID+1);
	esdEP->GetQContributionXArraysub2()->Set(maxID+1);
	esdEP->GetQContributionYArraysub2()->Set(maxID+1);
      }
	
      const int NT = tracklist->GetEntries();
      
      if (NT>4){

	// qvector full event
	fQVector = new TVector2(GetQ(esdEP,tracklist));
	fEventplaneQ = fQVector->Phi()/2; 
	// q vector subevents
	GetQsub(qq1, qq2, tracklist, esdEP);
	fQsub1 = new TVector2(qq1);
	fQsub2 = new TVector2(qq2);
	fQsubRes = (fQsub1->Phi()/2 - fQsub2->Phi()/2);

	esdEP->SetQVector(fQVector);
	esdEP->SetEventplaneQ(fEventplaneQ);
	esdEP->SetQsub(fQsub1,fQsub2);
	esdEP->SetQsubRes(fQsubRes);
	
	fHOutEventplaneQ->Fill(fEventplaneQ);
	fHOutsub1sub2->Fill(fQsub1->Phi()/2.,fQsub2->Phi()/2.);
	fHOutNTEPRes->Fill(NT,fQsubRes);
	
	if (fUseMCRP) fHOutDiff->Fill(fEventplaneQ, fRP);
	
	for (int iter = 0; iter<NT;iter++){
	  AliAODTrack* track = dynamic_cast<AliAODTrack*> (tracklist->At(iter));
	  if (track) {
	    float delta = track->Phi()-fEventplaneQ;
	    while (delta < 0) delta += TMath::Pi();
	    while (delta > TMath::Pi()) delta -= TMath::Pi();
	    fHOutPTPsi->Fill(track->Pt(),delta);
	    fHOutPhi->Fill(track->Phi());
	    fHOutPhiCorr->Fill(track->Phi(),GetPhiWeight(track));
	  }
	}
	
	AliAODTrack* trmax = dynamic_cast<AliAODTrack*>(aod->GetTrack(0));
	if(!trmax) AliFatal("Not a standard AOD");
	for (int iter = 1; iter<NT;iter++){
	  AliAODTrack* track = dynamic_cast<AliAODTrack*> (tracklist->At(iter));
	  if (track && (track->Pt() > trmax->Pt())) trmax = track;
	}
	fHOutleadPTPsi->Fill(trmax->Phi(),fEventplaneQ);      
      }     
      delete tracklist;
      tracklist = 0;
    }	
	
    
  }  

  
  else {
    printf(" Analysis Input not known!\n\n ");
    return;
  }
  PostData(1, fOutputList); 
}

//________________________________________________________________________
void AliEPSelectionTask::Terminate(Option_t */*option*/)
{
  // Terminate analysis
}

//__________________________________________________________________________
TVector2 AliEPSelectionTask::GetQ(AliEventplane* EP, TObjArray* tracklist)
{
  // Get the Q vector
  TVector2 mQ;
  float mQx=0, mQy=0;
  AliVTrack* track;
  Double_t weight;
  Int_t idtemp = -1;
  // get recentering values
  Double_t mean[2], rms[2];
  Recenter(0, mean);
  Recenter(1, rms);

  int nt = tracklist->GetEntries();

  for (int i=0; i<nt; i++){
    weight = 1;
    track = dynamic_cast<AliVTrack*> (tracklist->At(i));
    if (track) {
      weight = GetWeight(track);
    if (fSaveTrackContribution){
      idtemp = track->GetID(); 
      if ((fAnalysisInput.CompareTo("AOD")==0) && (fAODfilterbit == 128)) idtemp = idtemp*(-1) - 1;
      EP->GetQContributionXArray()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
      EP->GetQContributionYArray()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
     }
     mQx += (weight*cos(2*track->Phi())/rms[0]);
     mQy += (weight*sin(2*track->Phi())/rms[1]);
    }
  }
  mQ.Set(mQx-(mean[0]/rms[0]), mQy-(mean[1]/rms[1]));
  return mQ;
}
  
  //________________________________________________________________________
void AliEPSelectionTask::GetQsub(TVector2 &Q1, TVector2 &Q2, TObjArray* tracklist,AliEventplane* EP)
{
  // Get Qsub
  TVector2 mQ[2];
  float mQx1=0, mQy1=0, mQx2=0, mQy2=0;
  Double_t weight;
  // get recentering values
  Double_t mean[2], rms[2];
  Recenter(0, mean);
  Recenter(1, rms);

  AliVTrack* track;
  TRandom2 rn = 0;
  
  int nt = tracklist->GetEntries();
  int trackcounter1=0, trackcounter2=0;
  int idtemp = 0;

  if (fSplitMethod == AliEPSelectionTask::kRandom){
    
    for (Int_t i = 0; i < nt; i++) {
      weight = 1;
      track = dynamic_cast<AliVTrack*> (tracklist->At(i));
      if (!track) continue;
      weight = GetWeight(track);
      idtemp = track->GetID(); 
      if ((fAnalysisInput.CompareTo("AOD")==0) && (fAODfilterbit == 128)) idtemp = idtemp*(-1) - 1;
    
      // This loop splits the track set into 2 random subsets
      if( trackcounter1 < int(nt/2.) && trackcounter2 < int(nt/2.)){
        float random = rn.Rndm();
        if(random < .5){
          mQx1 += (weight*cos(2*track->Phi())/rms[0]);
          mQy1 += (weight*sin(2*track->Phi())/rms[1]);
          if (fSaveTrackContribution){
            EP->GetQContributionXArraysub1()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
            EP->GetQContributionYArraysub1()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
          }
          trackcounter1++;
        }
        else {
          mQx2 += (weight*cos(2*track->Phi())/rms[0]);
          mQy2 += (weight*sin(2*track->Phi())/rms[1]);
          if (fSaveTrackContribution){
            EP->GetQContributionXArraysub2()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
            EP->GetQContributionYArraysub2()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
          }
          trackcounter2++;
        }
      }
      else if( trackcounter1 >= int(nt/2.)){
        mQx2 += (weight*cos(2*track->Phi())/rms[0]);
        mQy2 += (weight*sin(2*track->Phi())/rms[1]);
        if (fSaveTrackContribution){
          EP->GetQContributionXArraysub2()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
          EP->GetQContributionYArraysub2()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
        }
        trackcounter2++;
      }
      else {
        mQx1 += (weight*cos(2*track->Phi())/rms[0]);
        mQy1 += (weight*sin(2*track->Phi())/rms[1]);
        if (fSaveTrackContribution){
          EP->GetQContributionXArraysub1()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
          EP->GetQContributionYArraysub1()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
        }
        trackcounter1++;
      }
    }
  } else if (fSplitMethod == AliEPSelectionTask::kEta) {
     
    for (Int_t i = 0; i < nt; i++) {
      weight = 1;
      track = dynamic_cast<AliVTrack*> (tracklist->At(i));
      if (!track) continue;
      weight = GetWeight(track);
      Double_t eta = track->Eta();
      idtemp = track->GetID(); 
      if ((fAnalysisInput.CompareTo("AOD")==0) && (fAODfilterbit == 128)) idtemp = idtemp*(-1) - 1;

      if (eta > fEtaGap/2.) {  
        mQx1 += (weight*cos(2*track->Phi())/rms[0]);
        mQy1 += (weight*sin(2*track->Phi())/rms[1]);
        if (fSaveTrackContribution){
          EP->GetQContributionXArraysub1()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
          EP->GetQContributionYArraysub1()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
        }
      } else if (eta < -1.*fEtaGap/2.) {
        mQx2 += (weight*cos(2*track->Phi())/rms[0]);
        mQy2 += (weight*sin(2*track->Phi())/rms[1]);
        if (fSaveTrackContribution){
          EP->GetQContributionXArraysub2()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
          EP->GetQContributionYArraysub2()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
        }
      }
    }
  } else if (fSplitMethod == AliEPSelectionTask::kCharge) {
     
    for (Int_t i = 0; i < nt; i++) {
      weight = 1;
      track = dynamic_cast<AliVTrack*> (tracklist->At(i));
      if (!track) continue;
      weight = GetWeight(track);
      Short_t cha = track->Charge();
      idtemp = track->GetID(); 
      if ((fAnalysisInput.CompareTo("AOD")==0) && (fAODfilterbit == 128)) idtemp = idtemp*(-1) - 1;

      if (cha > 0) {  
        mQx1 += (weight*cos(2*track->Phi())/rms[0]);
        mQy1 += (weight*sin(2*track->Phi())/rms[1]);
        if (fSaveTrackContribution){
          EP->GetQContributionXArraysub1()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
          EP->GetQContributionYArraysub1()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
        }
      } else if (cha < 0) {
        mQx2 += (weight*cos(2*track->Phi())/rms[0]);
        mQy2 += (weight*sin(2*track->Phi())/rms[1]);
        if (fSaveTrackContribution){
          EP->GetQContributionXArraysub2()->AddAt(weight*cos(2*track->Phi())/rms[0],idtemp);
          EP->GetQContributionYArraysub2()->AddAt(weight*sin(2*track->Phi())/rms[1],idtemp);
        }
      }
    }
  } else {
    printf("plane resolution determination method not available!\n\n ");
    return;
  }
  // apply recenetering
  mQ[0].Set(mQx1-(mean[0]/rms[0]), mQy1-(mean[1]/rms[1]));
  mQ[1].Set(mQx2-(mean[0]/rms[0]), mQy2-(mean[1]/rms[1]));
  Q1 = mQ[0];
  Q2 = mQ[1];
}

//________________________________________________________________________
void AliEPSelectionTask::SetPersonalESDtrackCuts(AliESDtrackCuts* trackcuts){
  
  if(fESDtrackCuts){ 
    delete fESDtrackCuts;
    fESDtrackCuts = 0;
  }
  if (fAnalysisInput.CompareTo("AOD")==0){
    AliInfo("ESD track cuts not possible for AOD analysis; please use SetPersonalAODtrackCuts(); using TPC only track cuts");  
    fUsercuts = kFALSE;
    SetTrackType("TPC");
    return;
  } 
  fUsercuts = kTRUE;
  fESDtrackCuts = trackcuts;
}

//________________________________________________________________________
void AliEPSelectionTask::SetPersonalAODtrackCuts(UInt_t filterbit, Float_t etalow, Float_t etaup, Float_t ptlow, Float_t ptup, Int_t ntpc){
  
  if(fESDtrackCuts){ 
    delete fESDtrackCuts;
    fESDtrackCuts = 0;
  }
  if (fAnalysisInput.CompareTo("ESD")==0){
    AliInfo("AOD track cuts not possible for ESD analysis; please use SetPersonalESDtrackCuts(); using TPC only track cuts");  
    fUsercuts = kFALSE;
    SetTrackType("TPC");
    return;
  }
  fUsercuts = kTRUE;
  fESDtrackCuts = new AliESDtrackCuts();
  fESDtrackCuts->SetPtRange(ptlow,ptup);
  fESDtrackCuts->SetMinNClustersTPC(ntpc);
  fESDtrackCuts->SetEtaRange(etalow,etaup);
  fAODfilterbit = filterbit;
}

//_____________________________________________________________________________

void AliEPSelectionTask::SetTrackType(TString tracktype){
  fTrackType = tracktype;
  if (!fUsercuts) {
  if (fTrackType.CompareTo("GLOBAL")==0){ 
    fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
    fAODfilterbit = 32;
  }	
  if (fTrackType.CompareTo("TPC")==0){  
    fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
    fAODfilterbit = 128;
  }
  fESDtrackCuts->SetPtRange(0.15,20.);
  fESDtrackCuts->SetEtaRange(-0.8,0.8);
  }
}

//________________________________________________________________________
Double_t AliEPSelectionTask::GetWeight(TObject* track1)
{
  Double_t ptweight=1;
  AliVTrack* track = dynamic_cast<AliVTrack*>(track1);
  if (fUsePtWeight && track) {      
    if (track->Pt()<2) ptweight=track->Pt();
    else ptweight=2;
  }
  return ptweight*GetPhiWeight(track);
}

//________________________________________________________________________
Double_t AliEPSelectionTask::GetPhiWeight(TObject* track1)
{
  Double_t phiweight=1;
  AliVTrack* track = dynamic_cast<AliVTrack*>(track1);

  TH1F *phiDist = 0x0;
  if(track) phiDist = SelectPhiDist(track);
  
  if (fUsePhiWeight && phiDist && track) {
    Double_t nParticles = phiDist->Integral();
    Double_t nPhibins = phiDist->GetNbinsX();
  
    Double_t Phi = track->Phi();
    
    while (Phi<0) Phi += TMath::TwoPi();
    while (Phi>TMath::TwoPi()) Phi -= TMath::TwoPi();
      
    Double_t PhiDistValue = phiDist->GetBinContent(1+TMath::FloorNint((track->Phi())*nPhibins/TMath::TwoPi()));
    
    if (PhiDistValue > 0) phiweight = nParticles/nPhibins/PhiDistValue;
  }
  return phiweight;
}

//________________________________________________________________________
void AliEPSelectionTask::Recenter(Int_t var, Double_t * values)
{
  
  if (fUseRecentering && fQDist[0] && fQDist[1] && fCentrality!=-1.) {
    Int_t centbin = fQDist[0]->FindBin(fCentrality);

    if(var==0) { // fill mean
      values[0] = fQDist[0]->GetBinContent(centbin);
      values[1] = fQDist[1]->GetBinContent(centbin);
    }
    else if(var==1) { // fill rms
      values[0] = fQDist[0]->GetBinError(centbin);
      values[1] = fQDist[1]->GetBinError(centbin);
      // protection against division by zero
      if(values[0]==0.0) values[0]=1.0;
      if(values[1]==0.0) values[1]=1.0;
    }
  }
  else { //default (no recentering)
    values[0] = var;
    values[1] = var;
  }
  return;
}

//__________________________________________________________________________
void AliEPSelectionTask::SetPhiDist() 
{
  if(!fUserphidist && (fPeriod.CompareTo("LHC10h") == 0 || fPeriod.CompareTo("LHC11h") == 0)) { // if it's already set and custom class is required, we use the one provided by the user

    if (fPeriod.CompareTo("LHC10h")==0)
       {
        fPhiDist[0] = (TH1F*) fEPContainer->GetObject(fRunNumber, "Default");}
        else if(fPeriod.CompareTo("LHC11h")==0){
            Int_t runbin=fHruns->FindBin(fRunNumber);
            if (fHruns->GetBinContent(runbin) > 1){
              fSparseDist->GetAxis(0)->SetRange(runbin,runbin);
              }
            else if(fHruns->GetBinContent(runbin) < 2){
               fSparseDist->GetAxis(0)->SetRange(1,2901); // not calibrated run, use integrated phi-weights
               AliInfo("Using integrated Phi-weights for this run");
               }
            for (Int_t i = 0; i<4 ;i++)
            {
	     if(fPhiDist[i]){
               delete fPhiDist[i];
               fPhiDist[i] = 0x0;
               }
             if(i == 0){
               fSparseDist->GetAxis(1)->SetRange(1,1);  // neg charge
               fSparseDist->GetAxis(2)->SetRange(1,1);} // neg eta 
             if(i == 1){
               fSparseDist->GetAxis(1)->SetRange(2,2);  // pos charge
               fSparseDist->GetAxis(2)->SetRange(1,1);} // neg eta
             if(i == 2){
               fSparseDist->GetAxis(1)->SetRange(1,1);  // neg charge
               fSparseDist->GetAxis(2)->SetRange(2,2);} // pos eta 
             if(i == 3){
               fSparseDist->GetAxis(1)->SetRange(2,2);  // pos charge
               fSparseDist->GetAxis(2)->SetRange(2,2);} // pos eta
             fPhiDist[i] = (TH1F*)fSparseDist->Projection(3); // Projection on Phi
             fPhiDist[i]->SetName(Form("phidist%d%d",i,fRunNumber));
             fSparseDist->GetAxis(1)->SetRange(1,2); // reset axes
             fSparseDist->GetAxis(2)->SetRange(1,2);
             }
             fSparseDist->GetAxis(0)->SetRange(1,2901);// reset run axis
       }

    if (!fPhiDist[0]) AliFatal(Form("Cannot find OADB phi distribution for run %d", fRunNumber));

  } 
  
    
  if (fPeriod.CompareTo("LHC10h")==0 || fUserphidist){
     Bool_t emptybins;

     int iter = 0;  
     while (iter<3){
         emptybins = kFALSE;
   
         for (int i=1; i<fPhiDist[0]->GetNbinsX(); i++){
	   if (!((fPhiDist[0]->GetBinContent(i))>0)) {
	     emptybins = kTRUE;
	   }
         }  
         if (emptybins) {
	   cout << "empty bins - rebinning!" << endl;
	   fPhiDist[0]->Rebin();
	   iter++;
         }      
         else iter = 3;
     }
  
     if (emptybins) {
       AliError("After Maximum of rebinning still empty Phi-bins!!!");
     }
  }
  if (fPeriod.CompareTo("LHC10h") != 0 && fPeriod.CompareTo("LHC11h") != 0 && !fUserphidist){
  AliInfo("No Phi-weights available. All Phi weights set to 1");
  SetUsePhiWeight(kFALSE);
  }
}

//__________________________________________________________________________
void AliEPSelectionTask::SetQvectorDist() 
{
  if(!fUseRecentering) return;
  AliInfo(Form("Setting q vector distributions"));
  fQDist[0] = (TProfile*) fQxContainer->GetObject(fRunNumber, "Default");
  fQDist[1] = (TProfile*) fQyContainer->GetObject(fRunNumber, "Default");

  if (!fQDist[0] || !fQDist[1]) {
    AliError(Form("Cannot find OADB q-vector distributions for run %d. Using default values (mean=0,rms=1).", fRunNumber));
    return;
  }

  Bool_t emptybins;

  int iter = 0;  
  while (iter<3){
    emptybins = kFALSE;
    
    for (int i=1; i<=fQDist[0]->GetNbinsX()-2; i++){
      if (!((fQDist[0]->GetBinEntries(i))>0)) {
	emptybins = kTRUE;
      }
    }
    if (emptybins) {
      cout << "empty bins - rebinning!" << endl;
      fQDist[0]->Rebin();
      fQDist[1]->Rebin();
      iter++;
    }
    else iter = 3;
  }
  
  if (emptybins) {
    AliError("After Maximum of rebinning still empty Qxy-bins!!!");
  }
}

//__________________________________________________________________________
void AliEPSelectionTask::SetPersonalPhiDistribution(const char* infilename, char* listname)
{
  
  fUserphidist = kTRUE;
  
  TFile f(infilename);
  TObject* list = f.Get(listname);
  fPhiDist[0] = (TH1F*)list->FindObject("fHOutPhi");
  if (!fPhiDist[0]) AliFatal("Phi Distribution not found!!!");

  f.Close();
} 

//_________________________________________________________________________
TObjArray* AliEPSelectionTask::GetAODTracksAndMaxID(AliAODEvent* aod, Int_t& maxid)
{
  TObjArray *acctracks = new TObjArray();
  
  AliAODTrack *tr = 0;
  Int_t maxid1 = 0;
  Int_t maxidtemp = -1;
  Float_t ptlow = 0;
  Float_t ptup = 0;
  Float_t etalow = 0;
  Float_t etaup = 0;
  fESDtrackCuts->GetPtRange(ptlow,ptup);
  fESDtrackCuts->GetEtaRange(etalow,etaup);
  Int_t ntpc = fESDtrackCuts->GetMinNClusterTPC(); 
  
  for (Int_t i = 0; i < aod->GetNumberOfTracks() ; i++){
     tr = dynamic_cast<AliAODTrack*>(aod->GetTrack(i));
     if(!tr) AliFatal("Not a standard AOD");
     maxidtemp = tr->GetID(); 
     if(maxidtemp < 0 && fAODfilterbit != 128) continue;
     if(maxidtemp > -1 && fAODfilterbit == 128) continue;
     if (fAODfilterbit == 128) maxidtemp = maxidtemp*(-1) - 1;
     if (maxidtemp > maxid1) maxid1 = maxidtemp;
     if(tr->TestFilterBit(fAODfilterbit) && tr->Pt() < ptup && tr->Pt() > ptlow && tr->Eta() < etaup && tr->Eta() > etalow && tr->GetTPCNcls() > ntpc){
     acctracks->Add(tr);
     }
  }
  
  maxid = maxid1;
  
  return acctracks;
  
}

//_________________________________________________________________________
void AliEPSelectionTask::SetOADBandPeriod()
{ 
  TString oadbfilename; 

  if (fRunNumber >= 136851 && fRunNumber <= 139515) // LHC10h
    {fPeriod = "LHC10h";
     if (!fUserphidist) { // if it's already set and custom class is required, we use the one provided by the user
        
        if (fAnalysisInput.CompareTo("AOD")==0){
           oadbfilename = (Form("%s/COMMON/EVENTPLANE/data/epphidist.aod.root", AliAnalysisManager::GetOADBPath()));
           } else if (fAnalysisInput.CompareTo("ESD")==0){
           oadbfilename = (Form("%s/COMMON/EVENTPLANE/data/epphidist.root", AliAnalysisManager::GetOADBPath()));
           }
 
       TFile foadb(oadbfilename); 
       if(!foadb.IsOpen()) AliFatal(Form("Cannot open OADB file %s", oadbfilename.Data()));

       AliInfo("Using Standard OADB");
       fEPContainer = (AliOADBContainer*) foadb.Get("epphidist");    
       if (!fEPContainer) AliFatal("Cannot fetch OADB container for EP selection");
       foadb.Close();
       }
     }
  
  if (fRunNumber >= 166529 && fRunNumber <= 170593) // LHC11h
     {fPeriod = "LHC11h";
      if (!fUserphidist) {
      // if it's already set and custom class is required, we use the one provided by the user
      
      oadbfilename = (Form("%s/COMMON/EVENTPLANE/data/epphidist2011.root", AliAnalysisManager::GetOADBPath()));
      TFile *foadb = TFile::Open(oadbfilename); 
      if(!foadb->IsOpen()) AliFatal(Form("Cannot open OADB file %s", oadbfilename.Data()));

      AliInfo("Using Standard OADB");
      fSparseDist = (THnSparse*) foadb->Get("Default");    
      if (!fSparseDist) AliFatal("Cannot fetch OADB container for EP selection");
      foadb->Close();
      if(!fHruns){ 
           fHruns = (TH1F*)fSparseDist->Projection(0); //projection on run axis;
           fHruns->SetName("runsHisto");
      }
      }

      if(fUseRecentering) {
	oadbfilename = (Form("%s/COMMON/EVENTPLANE/data/eprecentering.root", AliAnalysisManager::GetOADBPath()));
	TFile *foadb = TFile::Open(oadbfilename);
	if(!foadb->IsOpen()) AliFatal(Form("Cannot open OADB file %s", oadbfilename.Data()));

	AliInfo("Using Standard OADB");
	fQxContainer = (AliOADBContainer*) foadb->Get("eprecentering.Qx");    
	fQyContainer = (AliOADBContainer*) foadb->Get("eprecentering.Qy");    
	if (!fQxContainer || !fQyContainer) AliFatal("Cannot fetch OADB container for EP recentering");
	foadb->Close();
      }

     } 
}

//_________________________________________________________________________
TH1F* AliEPSelectionTask::SelectPhiDist(AliVTrack *track)
{ 
  if (fPeriod.CompareTo("LHC10h")==0  || fUserphidist) return fPhiDist[0];
  else if(fPeriod.CompareTo("LHC11h")==0)
    {
     if (track->Charge() < 0)
       {
        if(track->Eta() < 0.)       return fPhiDist[0];
        else if (track->Eta() > 0.) return fPhiDist[2];
       }
      else if (track->Charge() > 0)
       {
        if(track->Eta() < 0.)       return fPhiDist[1];
        else if (track->Eta() > 0.) return fPhiDist[3];
       }
       
    }
  return 0;   
}

TObjArray* AliEPSelectionTask::GetTracksForLHC11h(AliESDEvent* esd)
{
  // Need to do this hack beacuse only this type of TPC only tracks in AOD is available and one type of Phi-weights is used
  TObjArray *acctracks = new TObjArray();
  acctracks->SetOwner(kTRUE);
  
  const AliESDVertex *vtxSPD = esd->GetPrimaryVertexSPD();

  Float_t ptlow = 0;
  Float_t ptup = 0;
  Float_t etalow = 0;
  Float_t etaup = 0;
  fESDtrackCuts->GetPtRange(ptlow,ptup);
  fESDtrackCuts->GetEtaRange(etalow,etaup);
  
  Double_t pDCA[3] = { 0. }; // momentum at DCA
  Double_t rDCA[3] = { 0. }; // position at DCA
  Float_t  dDCA[2] = {0.};    // DCA to the vertex d and z
  Float_t  cDCA[3] = {0.};    // covariance of impact parameters

 
  
  for (Int_t i = 0; i < esd->GetNumberOfTracks() ; i++){
  
    AliESDtrack* esdTrack = esd->GetTrack(i); //carefull do not modify it othwise  need to work with a copy 
    //
    // Track selection
    if (!fESDtrackCuts->AcceptTrack(esdTrack)) continue;
    
    // create a tpc only tracl
    AliESDtrack *track = AliESDtrackCuts::GetTPCOnlyTrack(const_cast<AliESDEvent*>(esd),esdTrack->GetID());
    if(!track) continue;
    
    if(track->Pt()>0.)
    {
      // only constrain tracks above threshold
      AliExternalTrackParam exParam;
      // take the B-field from the ESD, no 3D fieldMap available at this point
      Bool_t relate = false;
      relate = track->RelateToVertexTPC(vtxSPD,esd->GetMagneticField(),kVeryBig,&exParam);
      if(!relate){
        delete track;
        continue;
      }
      // fetch the track parameters at the DCA (unconstraint)
      if(track->GetTPCInnerParam()){
	track->GetTPCInnerParam()->GetPxPyPz(pDCA);
	track->GetTPCInnerParam()->GetXYZ(rDCA);
      }
      // get the DCA to the vertex:
      track->GetImpactParametersTPC(dDCA,cDCA);
      // set the constrained parameters to the track
      track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
    }
    
    
    Float_t eta = track->Eta();
    Float_t pT = track->Pt();

    if(pT < ptlow || pT > ptup || eta < etalow || eta > etaup){
      delete track;
      continue;
    }

    acctracks->Add(track);
   }
  
  
  return acctracks;
  
}

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