ROOT logo

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

//-----------------------------------------------------------------
//         AliSpectraAODEventCuts class
//-----------------------------------------------------------------

#include "TChain.h"
#include "TTree.h"
#include "TLegend.h"
#include "TH1F.h"
#include "TH1I.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "TProfile.h"
#include "TSpline.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliESDVZERO.h"
#include "AliAODVZERO.h"
#include "AliSpectraAODEventCuts.h"
#include "AliSpectraAODTrackCuts.h"
#include <iostream>

using namespace std;

ClassImp(AliSpectraAODEventCuts)

AliSpectraAODEventCuts::AliSpectraAODEventCuts(const char *name) : 
TNamed(name, "AOD Event Cuts"),
fAOD(0),
fSelectBit(AliVEvent::kMB),
fCentralityMethod("V0M"),
fTrackBits(1),
fIsMC(0),
fIsLHC10h(1),
fTrackCuts(0),
fIsSelected(0),
fCentralityCutMin(0.),
fCentralityCutMax(999),
fQVectorCutMin(-999.),
fQVectorCutMax(999.),
fVertexCutMin(-10.),
fVertexCutMax(10.),
fMultiplicityCutMin(-999.),
fMultiplicityCutMax(99999.),
fqTPC(-999.),
fqV0C(-999.),
fqV0A(-999.),
fqV0Cx(-999.),
fqV0Ax(-999.),
fqV0Cy(-999.),
fqV0Ay(-999.),
fPsiV0C(-999.),
fPsiV0A(-999.),
fCent(-999.),
fOutput(0),
fCalib(0),
fRun(-1),
fMultV0(0),
fV0Cpol1(-1),
fV0Cpol2(-1),
fV0Cpol3(-1),
fV0Cpol4(-1),
fV0Apol1(-1),
fV0Apol2(-1),
fV0Apol3(-1),
fV0Apol4(-1),
fQvecIntList(0),
fQvecIntegral(0),
fSplineArrayV0A(0),
fSplineArrayV0C(0),
fSplineArrayTPC(0),
fQgenIntegral(0),
fSplineArrayV0Agen(0),
fSplineArrayV0Cgen(0),
fQvecMC(0),
fNch(0),
fQvecCalibType(0),
fV0Aeff(0)
{
	// Constructor
	fOutput=new TList();
	fOutput->SetOwner();
	fOutput->SetName("fOutput");

	fCalib=new TList();
	fCalib->SetOwner();
	fCalib->SetName("fCalib");

	fQvecIntList=new TList();
	fQvecIntList->SetOwner();
	fQvecIntList->SetName("fQvecIntList");

	TH1I *fHistoCuts = new TH1I("fHistoCuts", "Event Cuts", kNVtxCuts, -0.5, kNVtxCuts - 0.5);
	TH1F *fHistoVtxBefSel = new TH1F("fHistoVtxBefSel", "Vtx distr before event selection;z (cm)",500,-15,15);
	TH1F *fHistoVtxAftSel = new TH1F("fHistoVtxAftSel", "Vtx distr after event selection;z (cm)",500,-15,15);
	TH1F *fHistoEtaBefSel = new TH1F("fHistoEtaBefSel", "Eta distr before event selection;eta",500,-2,2);
	TH1F *fHistoEtaAftSel = new TH1F("fHistoEtaAftSel", "Eta distr after event selection;eta",500,-2,2);
	TH1F *fHistoNChAftSel = new TH1F("fHistoNChAftSel", "NCh distr after event selection;Nch",2000,-0.5,1999.5);
	TH2F *fHistoQVector = new TH2F("fHistoQVector", "QVector with VZERO distribution;centrality;Q vector from EP task",20,0,100,100,0,10);
	TH2F *fHistoEP = new TH2F("fHistoEP", "EP with VZERO distribution;centrality;Psi_{EP} from EP task",20,0,100,100,-2,2);
	TH2F *fPsiACor = new TH2F("fPsiACor", "EP with VZERO A distribution;centrality;Psi_{EP} VZERO-A",20,0,100,100,-2,2);
	TH2F *fPsiCCor = new TH2F("fPsiCCor", "EP with VZERO C distribution;centrality;Psi_{EP} VZERO-C",20,0,100,100,-2,2);
	TH2F *fQVecACor = new TH2F("fQVecACor", "QVec VZERO A;centrality;Qvector VZERO-A",20,0,100,100,0,10);
	TH2F *fQVecCCor = new TH2F("fQVecCCor", "QVec VZERO C;centrality;Qvector VZERO-C",20,0,100,100,0,10);
	TH2F *fV0M = new TH2F("fV0M", "V0 Multiplicity, before correction;V0 sector",64,-.5,63.5,500,0,1000);
	TH2F *fV0MCor = new TH2F("fV0MCor", "V0 Multiplicity, after correction;V0 sector",64,-.5,63.5,500,0,1000);
	TH2F *fV0Mmc = new TH2F("fV0Mmc", "V0 Multiplicity, before correction;V0 sector",64,-.5,63.5,500,0,1000);

	fSplineArrayV0A = new TObjArray();
	fSplineArrayV0A->SetOwner();
	fSplineArrayV0C = new TObjArray();
	fSplineArrayV0C->SetOwner();
	fSplineArrayTPC = new TObjArray();
	fSplineArrayTPC->SetOwner();
	fSplineArrayV0Agen = new TObjArray();
	fSplineArrayV0Agen->SetOwner();
	fSplineArrayV0Cgen = new TObjArray();
	fSplineArrayV0Cgen->SetOwner();

	fOutput->Add(fHistoCuts);
	fOutput->Add(fHistoVtxBefSel);
	fOutput->Add(fHistoVtxAftSel);
	fOutput->Add(fHistoEtaBefSel);
	fOutput->Add(fHistoEtaAftSel);
	fOutput->Add(fHistoNChAftSel);
	fOutput->Add(fHistoQVector);
	fOutput->Add(fHistoEP);
	fOutput->Add(fPsiACor);
	fOutput->Add(fPsiCCor);
	fOutput->Add(fQVecACor);
	fOutput->Add(fQVecCCor);
	fOutput->Add(fV0M);
	fOutput->Add(fV0MCor);
	fOutput->Add(fV0Mmc);

	for (Int_t i = 0; i<10; i++){
		fMeanQxa2[i] = -1;
		fMeanQya2[i] = -1;
		fMeanQxc2[i] = -1;
		fMeanQyc2[i] = -1;
	}
}

//______________________________________________________
Bool_t AliSpectraAODEventCuts::IsSelected(AliAODEvent * aod,AliSpectraAODTrackCuts     *trackcuts)
{
	// Returns true if Event Cuts are selected and applied
	fAOD = aod;
	fTrackCuts = trackcuts; // FIXME: if track cuts is 0, do not set (use the pre-set member). Do we need to pass this here at all??
	// FIXME: all those references by name are slow.
	((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kProcessedEvents);
	Bool_t IsPhysSel = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & fSelectBit);
	if(!IsPhysSel)return IsPhysSel;
	((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kPhysSelEvents);
	//loop on tracks, before event selection, filling QA histos
	AliAODVertex * vertex = fAOD->GetPrimaryVertex();//FIXME vertex is recreated
	if(vertex)((TH1F*)fOutput->FindObject("fHistoVtxBefSel"))->Fill(vertex->GetZ());
	fIsSelected =kFALSE;
	if(CheckVtxRange() && CheckCentralityCut() && CheckMultiplicityCut()){ //selection on vertex and Centrality
		fIsSelected=CheckQVectorCut(); // QVector is calculated only if the centrality and vertex are correct (performance)
	}
	if(fIsSelected){
		((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kAcceptedEvents);
		if(vertex)((TH1F*)fOutput->FindObject("fHistoVtxAftSel"))->Fill(vertex->GetZ());
	}
	Int_t Nch=0;
	for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
		AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
		if(!track) AliFatal("Not a standard AOD");
 		if (!fTrackCuts->IsSelected(track,kFALSE)) continue;
		((TH1F*)fOutput->FindObject("fHistoEtaBefSel"))->Fill(track->Eta());
		if(fIsSelected){
			((TH1F*)fOutput->FindObject("fHistoEtaAftSel"))->Fill(track->Eta());
			Nch++;
		}
	}
	fNch = Nch;
	if(fIsSelected)((TH1F*)fOutput->FindObject("fHistoNChAftSel"))->Fill(Nch);
	return fIsSelected;
}

//______________________________________________________
Bool_t AliSpectraAODEventCuts::CheckVtxRange()
{
	// reject events outside of range
	AliAODVertex * vertex = fAOD->GetPrimaryVertex();
	//when moving to 2011 wìone has to add a cut using SPD vertex.
	//The point is that for events with |z|>20 the vertexer tracks is not working (only 2011!). One has to put a safety cut using SPD vertex large e.g. 15cm
	if (!vertex)
	{
		((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kVtxNoEvent);
		return kFALSE;
	}
	if (vertex->GetZ() > fVertexCutMin && vertex->GetZ() < fVertexCutMax)
	{
		return kTRUE;
	}
	((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kVtxRange);
	return kFALSE;
}

//______________________________________________________
Bool_t AliSpectraAODEventCuts::CheckCentralityCut()
{
	// Check centrality cut
	fCent=-999.;
	fCent=fAOD->GetCentrality()->GetCentralityPercentile(fCentralityMethod.Data());
	if ( (fCent <= fCentralityCutMax)  &&  (fCent >= fCentralityCutMin) )  return kTRUE;
	((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kVtxCentral);
	return kFALSE;
}

//______________________________________________________
Bool_t AliSpectraAODEventCuts::CheckMultiplicityCut()
{
	// Check multiplicity cut
	// FIXME: why this is not tracket in the track stats histos?
	Int_t Ncharged=0;
	for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++){
		AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
		if(!track) AliFatal("Not a standard AOD");
		if (!fTrackCuts->IsSelected(track,kFALSE)) continue;
		Ncharged++;
	}
	if(Ncharged>fMultiplicityCutMin && Ncharged<fMultiplicityCutMax)return kTRUE;

	return kFALSE;
}

//______________________________________________________

Bool_t AliSpectraAODEventCuts::CheckQVectorCut()
{ 
	Double_t qVZERO = -999.;
	Double_t psi=-999.;

	if(fIsLHC10h){
		qVZERO=CalculateQVectorLHC10h();
		psi=fPsiV0A;
	}else{
		qVZERO=CalculateQVector();
		psi=fPsiV0A;
	}
	//q vector from TPC
	fqTPC=CalculateQVectorTPC();

	//cut on q vector
	if(qVZERO<fQVectorCutMin || qVZERO>fQVectorCutMax)return kFALSE;
	Double_t cent=fAOD->GetCentrality()->GetCentralityPercentile(fCentralityMethod.Data());
	((TH2F*)fOutput->FindObject("fHistoQVector"))->Fill(cent,qVZERO);
	((TH2F*)fOutput->FindObject("fHistoEP"))->Fill(cent,psi);
	((TH1I*)fOutput->FindObject("fHistoCuts"))->Fill(kQVector);


	return kTRUE;
}

//______________________________________________________
Double_t AliSpectraAODEventCuts::CalculateQVectorLHC10h(){

	Int_t run = fAOD->GetRunNumber();
	if(run != fRun){
		// Load the calibrations run dependent
		if(OpenInfoCalbration(run))fRun=run;
		else{
			fqV0C=-999.;
			fqV0A=-999.;
			return -999.;
		}
	}

	//V0 info
	Double_t Qxa2 = 0, Qya2 = 0;
	Double_t Qxc2 = 0, Qyc2 = 0;
	Double_t sumMc = 0, sumMa = 0;

	AliAODVZERO* aodV0 = fAOD->GetVZEROData();

	for (Int_t iv0 = 0; iv0 < 64; iv0++) {

		Double_t phiV0 = TMath::PiOver4()*(0.5 + iv0 % 8);

		Float_t multv0 = aodV0->GetMultiplicity(iv0);
		((TH2F*)fOutput->FindObject("fV0M"))->Fill(iv0,multv0);

		if (iv0 < 32){

			Double_t multCorC = -10;

			if (iv0 < 8)
				multCorC = multv0*fV0Cpol1/fMultV0->GetBinContent(iv0+1);
			else if (iv0 >= 8 && iv0 < 16)
				multCorC = multv0*fV0Cpol2/fMultV0->GetBinContent(iv0+1);
			else if (iv0 >= 16 && iv0 < 24)
				multCorC = multv0*fV0Cpol3/fMultV0->GetBinContent(iv0+1);
			else if (iv0 >= 24 && iv0 < 32)
				multCorC = multv0*fV0Cpol4/fMultV0->GetBinContent(iv0+1);

			if (multCorC < 0){
				cout<<"Problem with multiplicity in V0C"<<endl;
				fqV0C=-999.;
				fqV0A=-999.;
				return -999.;
			}

			Qxc2 += TMath::Cos(2*phiV0) * multCorC;
			Qyc2 += TMath::Sin(2*phiV0) * multCorC;

			sumMc += multCorC;
			((TH2F*)fOutput->FindObject("fV0MCor"))->Fill(iv0,multCorC);

		} else {

			Double_t multCorA = -10;

			if (iv0 >= 32 && iv0 < 40)
				multCorA = multv0*fV0Apol1/fMultV0->GetBinContent(iv0+1);
			else if (iv0 >= 40 && iv0 < 48)
				multCorA = multv0*fV0Apol2/fMultV0->GetBinContent(iv0+1);
			else if (iv0 >= 48 && iv0 < 56)
				multCorA = multv0*fV0Apol3/fMultV0->GetBinContent(iv0+1);
			else if (iv0 >= 56 && iv0 < 64)
				multCorA = multv0*fV0Apol4/fMultV0->GetBinContent(iv0+1);

			if (multCorA < 0){
				cout<<"Problem with multiplicity in V0A"<<endl;
				fqV0C=-999.;
				fqV0A=-999.;
				return -999.;
			}

			Qxa2 += TMath::Cos(2*phiV0) * multCorA;
			Qya2 += TMath::Sin(2*phiV0) * multCorA;

			sumMa += multCorA;
			((TH2F*)fOutput->FindObject("fV0MCor"))->Fill(iv0,multCorA);
		}
	}

	Short_t centrV0  = GetCentrCode(fAOD);

	Double_t Qxamean2 = 0.;
	Double_t Qyamean2 = 0.;
	Double_t Qxcmean2 = 0.;
	Double_t Qycmean2 = 0.;

	if(centrV0!=-1){
		Qxamean2 = fMeanQxa2[centrV0];
		Qyamean2 = fMeanQya2[centrV0];
		Qxcmean2 = fMeanQxc2[centrV0];
		Qycmean2 = fMeanQyc2[centrV0];
	}

	Double_t QxaCor2 = Qxa2 - Qxamean2*sumMa;
	Double_t QyaCor2 = Qya2 - Qyamean2*sumMa;
	Double_t QxcCor2 = Qxc2 - Qxcmean2*sumMc;
	Double_t QycCor2 = Qyc2 - Qycmean2*sumMc;

	fPsiV0A = TMath::ATan2(QyaCor2, QxaCor2)/2.;
	fPsiV0C = TMath::ATan2(QycCor2, QxcCor2)/2.;

	((TH2F*)fOutput->FindObject("fPsiACor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fPsiV0A);
	((TH2F*)fOutput->FindObject("fPsiCCor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fPsiV0C);

	fqV0A = TMath::Sqrt((QxaCor2*QxaCor2 + QyaCor2*QyaCor2)/sumMa);
	fqV0C = TMath::Sqrt((QxcCor2*QxcCor2 + QycCor2*QycCor2)/sumMc);
	fqV0Ax = QxaCor2*TMath::Sqrt(1./sumMa);
	fqV0Cx = QxcCor2*TMath::Sqrt(1./sumMc);
	fqV0Ay = QyaCor2*TMath::Sqrt(1./sumMa);
	fqV0Cy = QycCor2*TMath::Sqrt(1./sumMc);

	((TH2F*)fOutput->FindObject("fQVecACor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fqV0A);
	((TH2F*)fOutput->FindObject("fQVecCCor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fqV0C);

	return fqV0A; //FIXME we have to combine VZERO-A and C
}

//______________________________________________________

Double_t AliSpectraAODEventCuts::CalculateQVectorTPC(Double_t etaMin,Double_t etaMax){

	Double_t Qx2 = 0, Qy2 = 0;
	Int_t mult = 0;
	for(Int_t iT = 0; iT < fAOD->GetNumberOfTracks(); iT++) {
	        AliAODTrack* aodTrack = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iT));
               if(!aodTrack) AliFatal("Not a standard AOD");
		if (!aodTrack->TestFilterBit(128)) continue;  //FIXME track type hard coded -> TPC only constrained to the vertex
		if (aodTrack->Eta() <etaMin || aodTrack->Eta() > etaMax)continue;
		mult++;
		Qx2 += TMath::Cos(2*aodTrack->Phi());
		Qy2 += TMath::Sin(2*aodTrack->Phi());
	}
	if(mult!=0)fqTPC= TMath::Sqrt((Qx2*Qx2 + Qy2*Qy2)/mult);
	return fqTPC;
}

//______________________________________________________

Double_t AliSpectraAODEventCuts::CalculateQVector(){

	//V0 info
	Double_t Qxa2 = 0, Qya2 = 0;
	Double_t Qxc2 = 0, Qyc2 = 0;

	AliAODVZERO* aodV0 = fAOD->GetVZEROData();

	for (Int_t iv0 = 0; iv0 < 64; iv0++) {

		Float_t multv0 = aodV0->GetMultiplicity(iv0);

		((TH2F*)fOutput->FindObject("fV0M"))->Fill(iv0,multv0);

	}

	fPsiV0A = fAOD->GetEventplane()->CalculateVZEROEventPlane(fAOD,8,2,Qxa2,Qya2); // V0A
	fPsiV0C = fAOD->GetEventplane()->CalculateVZEROEventPlane(fAOD,9,2,Qxc2,Qyc2); // V0C

	((TH2F*)fOutput->FindObject("fPsiACor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fPsiV0A);
	((TH2F*)fOutput->FindObject("fPsiCCor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fPsiV0C);

	if(fIsMC){
	  //in MC, when the EPSelectionTask is not called the q-vectors are no longer self-normalized
	  
	  Double_t multA = aodV0->GetMTotV0A();
	  fqV0A = TMath::Sqrt((Qxa2*Qxa2 + Qya2*Qya2)/multA);
	  
	  Double_t multC = aodV0->GetMTotV0C();
	  fqV0C = TMath::Sqrt((Qxc2*Qxc2 + Qyc2*Qyc2)/multC);
	  
	  fqV0Ax = Qxa2*TMath::Sqrt(1./multA);
	  fqV0Cx = Qxc2*TMath::Sqrt(1./multC);
	  fqV0Ay = Qya2*TMath::Sqrt(1./multA);
	  fqV0Cy = Qyc2*TMath::Sqrt(1./multC);

	} else {
	
	  fqV0A = TMath::Sqrt((Qxa2*Qxa2 + Qya2*Qya2));
	  fqV0C = TMath::Sqrt((Qxc2*Qxc2 + Qyc2*Qyc2));
	  fqV0Ax = Qxa2;
	  fqV0Cx = Qxc2;
	  fqV0Ay = Qya2;
	  fqV0Cy = Qyc2;
	  
	}

	((TH2F*)fOutput->FindObject("fQVecACor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fqV0A);
	((TH2F*)fOutput->FindObject("fQVecCCor"))->Fill((Float_t)fAOD->GetCentrality()->GetCentralityPercentile("V0M"), fqV0C);

	return fqV0A; //FIXME we have to combine VZERO-A and C

}

//______________________________________________________
Short_t AliSpectraAODEventCuts::GetCentrCode(AliVEvent* ev)
{

	Short_t centrCode = -1;

	AliCentrality* centrality = 0;
	AliAODEvent* aod = (AliAODEvent*)ev;
	centrality = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP();

	Float_t centV0 = centrality->GetCentralityPercentile("V0M");
	Float_t centTrk = centrality->GetCentralityPercentile("TRK");


	if (TMath::Abs(centV0 - centTrk) < 5.0 && centV0 <= 80 && centV0 > 0){

		if ((centV0 > 0) && (centV0 <= 5.0))
			centrCode = 0;
		else if ((centV0 > 5.0) && (centV0 <= 10.0))
			centrCode = 1;
		else if ((centV0 > 10.0) && (centV0 <= 20.0))
			centrCode = 2;
		else if ((centV0 > 20.0) && (centV0 <= 30.0))
			centrCode = 3;
		else if ((centV0 > 30.0) && (centV0 <= 40.0))
			centrCode = 4;
		else if ((centV0 > 40.0) && (centV0 <= 50.0))
			centrCode = 5;
		else if ((centV0 > 50.0) && (centV0 <= 60.0))
			centrCode = 6;
		else if ((centV0 > 60.0) && (centV0 <= 70.0))
			centrCode = 7;
		else if ((centV0 > 70.0) && (centV0 <= 80.0))
			centrCode = 8;
	}

	return centrCode;

}

//______________________________________________________
void AliSpectraAODEventCuts::PrintCuts()
{
	// print info about event cuts
	cout << "Event Stats" << endl;
	cout << " > Trigger Selection: " << fSelectBit << endl;
	cout << " > Centrality estimator: " << fCentralityMethod << endl;
	cout << " > Number of accepted events: " << NumberOfEvents() << endl;
	cout << " > Number of processed events: " << NumberOfProcessedEvents() << endl;
	cout << " > Number of PhysSel events: " <<  NumberOfPhysSelEvents()  << endl;
	cout << " > Vertex out of range: " << ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kVtxRange + 1) << endl;
	cout << " > Events cut by centrality: " << ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kVtxCentral + 1) << endl;
	cout << " > Events without vertex: " << ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kVtxNoEvent + 1) << endl;
	cout << " > QVector cut: " << ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kQVector + 1) << endl;
	cout << " > Track type used for the QVector calculation: " << fTrackBits << endl;
	cout << " > QRange: [" << fQVectorCutMin <<"," <<fQVectorCutMax<<"]"<< endl;
	cout << " > Vertex: [" << fVertexCutMin <<"," <<fVertexCutMax<<"]"<< endl;
	cout << " > Multiplicity: [" << fMultiplicityCutMin <<"," <<fMultiplicityCutMax<<"]"<< endl;
	cout << " > Centrality: [" << fCentralityCutMin <<"," <<fCentralityCutMax<<"]"<< endl;
}

//_____________________________________________________________________________
Bool_t AliSpectraAODEventCuts::OpenInfoCalbration(Int_t run)
{

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

	if(!(cont->GetObject(run))){
		printf("OADB object hMultV0BefCorr is not available for run %i\n",run);
		return 0;
	}
	fMultV0 = ((TH2F*) cont->GetObject(run))->ProfileX();

	TF1* fpolc1 = new TF1("fpolc1","pol0", 0, 7);
	fMultV0->Fit(fpolc1, "RN");
	fV0Cpol1 = fpolc1->GetParameter(0);

	TF1* fpolc2 = new TF1("fpolc2","pol0", 8, 15);
	fMultV0->Fit(fpolc2, "RN");
	fV0Cpol2 = fpolc2->GetParameter(0);

	TF1* fpolc3 = new TF1("fpolc3","pol0", 16, 23);
	fMultV0->Fit(fpolc3, "RN");
	fV0Cpol3 = fpolc3->GetParameter(0);

	TF1* fpolc4 = new TF1("fpolc4","pol0", 24, 31);
	fMultV0->Fit(fpolc4, "RN");
	fV0Cpol4 = fpolc4->GetParameter(0);

	TF1* fpola1 = new TF1("fpola1","pol0", 32, 39);
	fMultV0->Fit(fpola1, "RN");
	fV0Apol1 = fpola1->GetParameter(0);

	TF1* fpola2 = new TF1("fpola2","pol0", 40, 47);
	fMultV0->Fit(fpola2, "RN");
	fV0Apol2 = fpola2->GetParameter(0);

	TF1* fpola3 = new TF1("fpola3","pol0", 48, 55);
	fMultV0->Fit(fpola3, "RN");
	fV0Apol3 = fpola3->GetParameter(0);

	TF1* fpola4 = new TF1("fpola4","pol0", 56, 63);
	fMultV0->Fit(fpola4, "RN");
	fV0Apol4 = fpola4->GetParameter(0);

	for(Int_t i=0; i < 10; i++){

		char nameQxa2[100];
		snprintf(nameQxa2,100, "hQxa2m_%i", i);

		char nameQya2[100];
		snprintf(nameQya2,100, "hQya2m_%i", i);

		char nameQxc2[100];
		snprintf(nameQxc2,100, "hQxc2m_%i", i);

		char nameQyc2[100];
		snprintf(nameQyc2,100, "hQyc2m_%i", i);

		AliOADBContainer* contQxa2 = (AliOADBContainer*) fCalib->FindObject(nameQxa2);
		if(!contQxa2){
			printf("OADB object %s is not available in the file\n", nameQxa2);
			return 0;
		}

		if(!(contQxa2->GetObject(run))){
			printf("OADB object %s is not available for run %i\n", nameQxa2, run);
			return 0;
		}

		fMeanQxa2[i] = ((TH1F*) contQxa2->GetObject(run))->GetMean();


		AliOADBContainer* contQya2 = (AliOADBContainer*) fCalib->FindObject(nameQya2);
		if(!contQya2){
			printf("OADB object %s is not available in the file\n", nameQya2);
			return 0;
		}

		if(!(contQya2->GetObject(run))){
			printf("OADB object %s is not available for run %i\n", nameQya2, run);
			return 0;
		}

		fMeanQya2[i] = ((TH1F*) contQya2->GetObject(run))->GetMean();


		AliOADBContainer* contQxc2 = (AliOADBContainer*) fCalib->FindObject(nameQxc2);
		if(!contQxc2){
			printf("OADB object %s is not available in the file\n", nameQxc2);
			return 0;
		}

		if(!(contQxc2->GetObject(run))){
			printf("OADB object %s is not available for run %i\n", nameQxc2, run);
			return 0;
		}

		fMeanQxc2[i] = ((TH1F*) contQxc2->GetObject(run))->GetMean();


		AliOADBContainer* contQyc2 = (AliOADBContainer*) fCalib->FindObject(nameQyc2);
		if(!contQyc2){
			printf("OADB object %s is not available in the file\n", nameQyc2);
			return 0;
		}

		if(!(contQyc2->GetObject(run))){
			printf("OADB object %s is not available for run %i\n", nameQyc2, run);
			return 0;
		}

		fMeanQyc2[i] = ((TH1F*) contQyc2->GetObject(run))->GetMean();

	}
	return 1;
}

//______________________________________________________


Long64_t AliSpectraAODEventCuts::Merge(TCollection* list)
{
	// Merge a list of AliSpectraAODEventCuts objects with this.
	// Returns the number of merged objects (including this).

	AliInfo("Merging");

	if (!list)
		return 0;

	if (list->IsEmpty())
		return 1;

	TIterator* iter = list->MakeIterator();
	TObject* obj;

	// collections of all histograms
	TList collections;

	Int_t count = 0;

	while ((obj = iter->Next())) {
		AliSpectraAODEventCuts* entry = dynamic_cast<AliSpectraAODEventCuts*> (obj);
		if (entry == 0)
			continue;

		TList * l = entry->GetOutputList();
		collections.Add(l);
		count++;
	}

	fOutput->Merge(&collections);

	delete iter;

	return count+1;
}

//______________________________________________________
Double_t AliSpectraAODEventCuts::GetQvecPercentile(Int_t v0side){

	//check Qvec and Centrality consistency
	if(fCent>90.) return -999.;
	if(v0side==0/*V0A*/){ if(fqV0A== -999.) return -999.; }
	if(v0side==1/*V0C*/){ if(fqV0C== -999.) return -999.; }
	if(v0side==2/*TPC*/){ if(fqTPC== -999.) return -999.; }

	fQvecIntegral = 0x0;

	if(v0side==0/*V0A*/){ fQvecIntegral = (TH2D*)fQvecIntList->FindObject("VZEROA"); }
	if(v0side==1/*V0C*/){ fQvecIntegral = (TH2D*)fQvecIntList->FindObject("VZEROC"); }
	if(v0side==2/*TPC*/){ fQvecIntegral = (TH2D*)fQvecIntList->FindObject("TPC"); }


	Int_t ic = -999;

	if(fQvecCalibType==1){
		if(fNch<0.) return -999.;
		ic = GetNchBin(fQvecIntegral);
	} else ic = (Int_t)fCent; //fQvecIntegral: 1% centrality bin

	TH1D *h1D = (TH1D*)fQvecIntegral->ProjectionY("h1D",ic+1,ic+1);

	TSpline *spline = 0x0;

	if(v0side==0/*V0A*/){
		if( CheckSplineArray(fSplineArrayV0A, ic) ) {
			spline = (TSpline*)fSplineArrayV0A->At(ic);
			//cout<<"Qvec V0A - ic: "<<ic<<" - Found TSpline..."<<endl;
		} else {
			spline = new TSpline3(h1D,"sp3");
			fSplineArrayV0A->AddAtAndExpand(spline,ic);
			//cout<<"Qvec V0A - ic: "<<ic<<" - TSpline not found. Creating..."<<endl;
		}
	}
	else if(v0side==1/*V0C*/){
		if( CheckSplineArray(fSplineArrayV0C, ic) ) {
			spline = (TSpline*)fSplineArrayV0C->At(ic);
		} else {
			spline = new TSpline3(h1D,"sp3");
			fSplineArrayV0C->AddAtAndExpand(spline,ic);
		}
	}
	else if(v0side==2/*TPC*/){
		if( CheckSplineArray(fSplineArrayTPC, ic) ) {
			spline = (TSpline*)fSplineArrayTPC->At(ic);
		} else {
			spline = new TSpline3(h1D,"sp3");
			fSplineArrayTPC->AddAtAndExpand(spline,ic);
		}
	}

	Double_t percentile =  -999.;
	if(v0side==0/*V0A*/){ percentile = 100*spline->Eval(fqV0A); }
	if(v0side==1/*V0C*/){ percentile = 100*spline->Eval(fqV0C); }
	if(v0side==2/*TPC*/){ percentile = 100*spline->Eval(fqTPC); }

	if(percentile>100. || percentile<0.) return -999.;

	return percentile;
}

//______________________________________________________
Double_t AliSpectraAODEventCuts::CalculateQVectorMC(Int_t v0side, Int_t type=1){

	if(!fIsMC) return -999.;

	// V0A efficiecy
	if(type==1){
		fV0Aeff = 0x0;
		fV0Aeff = (TH1F*)fQvecIntList->FindObject("vzeroa_efficiency_prim_plus_sec_over_gen");
		if(!fV0Aeff) return -999.;
	}

	// get MC array
	TClonesArray *arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());

	if (!arrayMC) AliFatal("Error: MC particles branch not found!\n");

	Double_t Qx2mc = 0., Qy2mc = 0.;
	Double_t mult2mc = 0;

	Int_t nMC = arrayMC->GetEntries();

	if(type==0){ // type==0: q-vec from tracks in vzero acceptance

		// loop on generated
		for (Int_t iMC = 0; iMC < nMC; iMC++){
			AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
			if(!partMC->Charge()) continue;//Skip neutrals

			// check vzero side
			if( CheckVZEROacceptance(partMC->Eta()) != v0side ) continue;

			// Calculate Qvec components
			Qx2mc += TMath::Cos(2.*partMC->Phi());
			Qy2mc += TMath::Sin(2.*partMC->Phi());
			mult2mc++;

		}// end loop on generated.

	}//end if on type==0

	else if(type==1){ // type==1 (default): q-vec from vzero

		// only used in qgen_vzero
		Double_t multv0mc[64];
		for(Int_t iCh=0;iCh<64;iCh++) multv0mc[iCh]=0; // initialize multv0mc to zero

		// loop on generated
		for (Int_t iMC = 0; iMC < nMC; iMC++){

			AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
			if(!partMC->Charge()) continue;//Skip neutrals

			// check vzero side
			if( CheckVZEROacceptance(partMC->Eta()) != v0side ) continue;

			//get v0 channel of gen track
			Int_t iv0 = CheckVZEROchannel(v0side, partMC->Eta(), partMC->Phi());

			//use the efficiecy as a weigth
			multv0mc[iv0] += fV0Aeff->GetFunction("f")->Eval(partMC->Pt());

			//calculate multiplicity for each vzero channell
			//multv0mc[iv0]++;

		}// end loop on generated.

		Int_t firstCh=-1,lastCh=-1;
		if (v0side == 0) {
			firstCh = 32;
			lastCh = 64;
		}
		else if (v0side == 1) {
			firstCh = 0;
			lastCh = 32;
		}
		for(Int_t iCh = firstCh; iCh < lastCh; ++iCh) {
			Double_t phi = TMath::Pi()/8. + TMath::Pi()/4.*(iCh%8);
			Double_t mult = multv0mc[iCh];
			Qx2mc += mult*TMath::Cos(2*phi);
			Qy2mc += mult*TMath::Sin(2*phi);
			mult2mc += mult;

			((TH2F*)fOutput->FindObject("fV0Mmc"))->Fill(iCh,multv0mc[iCh]);
		}

	}//end if on type==1

	// return q vector
	fQvecMC = TMath::Sqrt((Qx2mc*Qx2mc + Qy2mc*Qy2mc)/mult2mc);

	return fQvecMC;

}

//______________________________________________________
Int_t AliSpectraAODEventCuts::CheckVZEROchannel(Int_t vzeroside, Double_t eta, Double_t phi){

	//VZEROA eta acceptance
	Int_t ring = -1.;

	if ( vzeroside == 0){
		if (eta > 4.5 && eta <= 5.1 ) ring = 0;
		if (eta > 3.9 && eta <= 4.5 ) ring = 1;
		if (eta > 3.4 && eta <= 3.9 ) ring = 2;
		if (eta > 2.8 && eta <= 3.4 ) ring = 3;
	} else if (vzeroside == 1){
		if (eta > -3.7 && eta <= -3.2 ) ring = 0;
		if (eta > -3.2 && eta <= -2.7 ) ring = 1;
		if (eta > -2.7 && eta <= -2.2 ) ring = 2;
		if (eta > -2.2 && eta <= -1.7 ) ring = 3;
	}


	//VZEROAC phi acceptance
	Int_t phisector= -1;


	if ( phi > 0. && phi <= TMath::Pi()/4. ) phisector = 0;

	else if (phi > TMath::Pi()/4. && phi <= TMath::Pi()/2.) phisector = 1;

	else if (phi > TMath::Pi()/2 && phi <= (3./4.)*TMath::Pi() ) phisector =2;

	else if (phi > (3./4.)*TMath::Pi() && phi <= TMath::Pi() ) phisector = 3;

	else if (phi > TMath::Pi() && phi <= (5./4.)*TMath::Pi() ) phisector = 4;

	else if (phi > (5./4.)*TMath::Pi() && phi <= (3./2.)*TMath::Pi() ) phisector = 5;

	else if (phi > (3./2.)*TMath::Pi() && phi <= (7./4.)*TMath::Pi() ) phisector = 6;

	else if (phi > (7./4.)*TMath::Pi() && phi <= TMath::TwoPi() ) phisector = 7;

	if (vzeroside ==0) return Int_t(32+(phisector+(ring*8.))); // iv0 >= 32 -> V0A
	if (vzeroside ==1) return Int_t(phisector+(ring*8.));  // iv0 < 32 -> V0C

	else return -999.;
}

//______________________________________________________
Int_t AliSpectraAODEventCuts::CheckVZEROacceptance(Double_t eta){

	// eval VZERO side - FIXME Add TPC!

	if(eta > 2.8  && eta < 5.1) return 0; //VZEROA

	else if (eta > -3.7  && eta < -1.7) return 1; //VZEROC

	return -999.;

}

//______________________________________________________
Double_t AliSpectraAODEventCuts::GetQvecPercentileMC(Int_t v0side, Int_t type=1){

	//check Qvec and Centrality consistency
	if(fCent>90.) return -999.;

	Double_t qvec = CalculateQVectorMC(v0side, type);
	if(qvec==-999.) return -999.;

	fQgenIntegral = 0x0;

	if(type==0){
		if(v0side==0/*V0A*/){ fQgenIntegral = (TH2D*)fQvecIntList->FindObject("VZEROAgen"); }
		if(v0side==1/*V0C*/){ fQgenIntegral = (TH2D*)fQvecIntList->FindObject("VZEROCgen"); }
	} else if (type==1){
		if(v0side==0/*V0A*/){ fQgenIntegral = (TH2D*)fQvecIntList->FindObject("VZEROAgen_vzero"); }
		if(v0side==1/*V0C*/){ fQgenIntegral = (TH2D*)fQvecIntList->FindObject("VZEROCgen_vzero"); }
	}


	//FIXME you need a check on the TH2D, add AliFatal or a return.

	Int_t ic = -999;

	if(fQvecCalibType==1){
		if(fNch<0.) return -999.;
		ic = GetNchBin(fQgenIntegral);
	} else ic = (Int_t)fCent; //fQvecIntegral: 1% centrality bin

	TH1D *h1D = (TH1D*)fQgenIntegral->ProjectionY("h1Dgen",ic+1,ic+1);

	TSpline *spline = 0x0;

	if(v0side==0/*V0A*/){
		if( CheckSplineArray(fSplineArrayV0Agen, ic) ) {
			spline = (TSpline*)fSplineArrayV0Agen->At(ic);
			//cout<<"Qvec V0A - ic: "<<ic<<" - Found TSpline..."<<endl;
		} else {
			spline = new TSpline3(h1D,"sp3");
			fSplineArrayV0Agen->AddAtAndExpand(spline,ic);
		}
	}
	else if(v0side==1/*V0C*/){
		if( CheckSplineArray(fSplineArrayV0Cgen, ic) ) {
			spline = (TSpline*)fSplineArrayV0Cgen->At(ic);
		} else {
			spline = new TSpline3(h1D,"sp3");
			fSplineArrayV0Cgen->AddAtAndExpand(spline,ic);
		}
	}

	Double_t percentile = 100*spline->Eval(qvec);

	if(percentile>100. || percentile<0.) return -999.;

	return percentile;

}

//______________________________________________________
Bool_t AliSpectraAODEventCuts::CheckSplineArray(TObjArray * splarr, Int_t n){
	//check TSpline array consistency

	//   Int_t n = (Int_t)fCent; //FIXME should be ok for icentr and nch

	if(splarr->GetSize()<n) return kFALSE;

	if(!splarr->At(n)) return kFALSE;

	return kTRUE;

}

//______________________________________________________
Int_t AliSpectraAODEventCuts::GetNchBin(TH2D * h){

	Double_t xmax = h->GetXaxis()->GetXmax();

	if(fNch>xmax) return (Int_t)h->GetNbinsX();

	return (fNch*h->GetNbinsX())/h->GetXaxis()->GetXmax();

}

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