ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id: AliGenEMCocktail.cxx 40702 2010-04-26 13:09:52Z morsch $ */

// Class to create the cocktail for physics with electrons, di-electrons,
// and photons from the decay of the following sources:
// pizero, eta, rho, omega, etaprime, phi
// Kinematic distributions of the sources are taken from AliGenEMlib.
// Decay channels can be selected via the method SetDecayMode.
// Particles can be generated flat in pT with weights according to the
// chosen pT distributions from AliGenEMlib (weighting mode: kNonAnalog),
// or they are generated according to the pT distributions themselves
// (weighting mode: kAnalog)  
 
 
#include <TObjArray.h>
#include <TParticle.h>
#include <TF1.h>
#include <TVirtualMC.h>
#include <TPDGCode.h>
#include <TDatabasePDG.h>
#include "AliGenCocktailEventHeader.h"

#include "AliGenCocktailEntry.h"
#include "AliGenEMCocktail.h"
#include "AliGenEMlib.h"
#include "AliGenBox.h"
#include "AliGenParam.h"
#include "AliMC.h"
#include "AliRun.h"
#include "AliStack.h"
#include "AliDecayer.h"
#include "AliDecayerPythia.h"
#include "AliLog.h"
#include "AliGenCorrHF.h"

ClassImp(AliGenEMCocktail)  
  
//________________________________________________________________________
AliGenEMCocktail::AliGenEMCocktail()
:AliGenCocktail(),
	fDecayer(0),
	fDecayMode(kAll),
	fWeightingMode(kNonAnalog),
	fNPart(1000),
	fYieldArray(),
	fCollisionSystem(AliGenEMlib::kpp7TeV),
	fPtSelectPi0(AliGenEMlib::kPizeroParam),
	fPtSelectEta(AliGenEMlib::kEtaParampp),
	fPtSelectOmega(AliGenEMlib::kOmegaParampp),
	fPtSelectPhi(AliGenEMlib::kPhiParampp),
	fCentrality(AliGenEMlib::kpp),
	fV2Systematic(AliGenEMlib::kNoV2Sys),
	fForceConv(kFALSE),
	fSelectedParticles(kGenHadrons)
{
	// Constructor
}

//_________________________________________________________________________
AliGenEMCocktail::~AliGenEMCocktail()
{
	// Destructor
}

//_________________________________________________________________________
void AliGenEMCocktail::SetHeaviestHadron(ParticleGenerator_t part)
{
	Int_t val=kGenPizero;
	while(val<part) val|=val<<1;

	fSelectedParticles=val;
	return;
}

//_________________________________________________________________________
void AliGenEMCocktail::CreateCocktail()
{
	// create and add sources to the cocktail

	fDecayer->SetForceDecay(fDecayMode);
	fDecayer->ForceDecay();

	// Set kinematic limits
	Double_t ptMin  = fPtMin;
	Double_t ptMax  = fPtMax;
	Double_t yMin   = fYMin;;
	Double_t yMax   = fYMax;;
	Double_t phiMin = fPhiMin*180./TMath::Pi();
	Double_t phiMax = fPhiMax*180./TMath::Pi();
	AliInfo(Form("Ranges pT:%4.1f : %4.1f GeV/c, y:%4.2f : %4.2f, Phi:%5.1f : %5.1f degres",ptMin,ptMax,yMin,yMax,phiMin,phiMax));
	AliInfo(Form("the parametrised sources uses the decay mode %d",fDecayMode));
	AliInfo(Form("Selected Params:collision system - %d , centrality - %d, pi0 param - %d, eta param - %d, omega param - %d, phi param - %d",fCollisionSystem, fCentrality, fPtSelectPi0, fPtSelectEta, fPtSelectOmega, fPtSelectPhi));
	//Initialize user selection for Pt Parameterization and centrality:
	AliGenEMlib::SelectParams(fCollisionSystem, fPtSelectPi0, fPtSelectEta, fPtSelectOmega, fPtSelectPhi, fCentrality,fV2Systematic);

	// Create and add electron sources to the generator
	// pizero
	if(fSelectedParticles&kGenPizero){
		AliGenParam *genpizero=0;
		Char_t namePizero[10];    
		snprintf(namePizero,10,"Pizero");    
			//fNPart/0.925: increase number of particles so that we have the chosen number of particles in the chosen eta range
	// 	genpizero = new AliGenParam(fNPart/0.925, new AliGenEMlib(), AliGenEMlib::kPizero, "DUMMY");
			//fYMin/0.925: increase eta range, so that the electron yield is constant (<5% change) over the chosen eta range
		genpizero->SetYRange(fYMin/0.925, fYMax/0.925);
		
		// NOTE Theo: fNPart/0.925: increase number of particles so that we have the chosen number of particles in the chosen eta range
		// NOTE Theo: fYMin/0.925: increase eta range, so that the electron yield is constant (<5% change) over the chosen eta range
		// NOTE Friederike: the additional factors here cannot be fixed numbers, if you need them 
		// 					generate a setting which puts them for you but never do it hardcoded - electrons are not the only ones 
		//					using the cocktail
		genpizero = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kPizero, "DUMMY");
		genpizero->SetYRange(fYMin, fYMax);

		AddSource2Generator(namePizero,genpizero);
		TF1 *fPtPizero = genpizero->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kPizero] = fPtPizero->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kPizero] = fPtPizero->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	// eta  
	if(fSelectedParticles&kGenEta){
		AliGenParam *geneta=0;
		Char_t nameEta[10];    
		snprintf(nameEta,10,"Eta");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		geneta = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kEta, "DUMMY");
		geneta->SetYRange(fYMin, fYMax);

		AddSource2Generator(nameEta,geneta);
		TF1 *fPtEta = geneta->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kEta] = fPtEta->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kEta] = fPtEta->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	// rho  
	if(fSelectedParticles&kGenRho0){
		AliGenParam *genrho=0;
		Char_t nameRho[10];    
		snprintf(nameRho,10,"Rho");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genrho = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kRho0, "DUMMY");
		genrho->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameRho,genrho);
		TF1 *fPtRho = genrho->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kRho0] = fPtRho->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kRho0] = fPtRho->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}
	
	// omega
	if(fSelectedParticles&kGenOmega){
		AliGenParam *genomega=0;
		Char_t nameOmega[10];    
		snprintf(nameOmega,10,"Omega");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genomega = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kOmega, "DUMMY");
		genomega->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameOmega,genomega);
		TF1 *fPtOmega = genomega->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kOmega] = fPtOmega->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kOmega] = fPtOmega->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	// etaprime
	if(fSelectedParticles&kGenEtaprime){
		AliGenParam *genetaprime=0;
		Char_t nameEtaprime[10];    
		snprintf(nameEtaprime,10,"Etaprime");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genetaprime = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kEtaprime, "DUMMY");
		genetaprime->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameEtaprime,genetaprime);
		TF1 *fPtEtaprime = genetaprime->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kEtaprime] = fPtEtaprime->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kEtaprime] = fPtEtaprime->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	// phi  
	if(fSelectedParticles&kGenPhi){
		AliGenParam *genphi=0;
		Char_t namePhi[10];    
		snprintf(namePhi,10,"Phi");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genphi = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kPhi, "DUMMY");
		genphi->SetYRange(fYMin, fYMax);
		AddSource2Generator(namePhi,genphi);
		TF1 *fPtPhi = genphi->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kPhi] = fPtPhi->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kPhi] = fPtPhi->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	// jpsi  
	if(fSelectedParticles&kGenJpsi){
		AliGenParam *genjpsi=0;
		Char_t nameJpsi[10];    
		snprintf(nameJpsi,10,"Jpsi");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genjpsi = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kJpsi, "DUMMY");
		genjpsi->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameJpsi,genjpsi);
		TF1 *fPtJpsi = genjpsi->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kJpsi] = fPtJpsi->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kJpsi] = fPtJpsi->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	// sigma  
	if(fSelectedParticles&kGenSigma0){
		AliGenParam * gensigma=0;
		Char_t nameSigma[10];    
		snprintf(nameSigma,10, "Sigma0");    
		gensigma = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kSigma0, "DUMMY");
		gensigma->SetYRange(fYMin, fYMax);

		AddSource2Generator(nameSigma,gensigma);
		TF1 *fPtSigma = gensigma->GetPt();
		#if ROOT_VERSION_CODE < ROOT_VERSION(5,99,0)
			fYieldArray[kSigma0] = fPtSigma->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#else
			fYieldArray[kSigma0] = fPtSigma->Integral(fPtMin,fPtMax,1.e-6);
		#endif
	}
	
	// k0short
	if(fSelectedParticles&kGenK0s){
		AliGenParam * genkzeroshort=0;
		Char_t nameK0short[10];    
		snprintf(nameK0short, 10, "K0short");    
		genkzeroshort = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kK0s, "DUMMY");
		genkzeroshort->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameK0short,genkzeroshort);
		TF1 *fPtK0short = genkzeroshort->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kK0s] = fPtK0short->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kK0s] = fPtK0short->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}	
	
	// Delta++
	if(fSelectedParticles&kGenDeltaPlPl){
		AliGenParam * genkdeltaPlPl=0;
		Char_t nameDeltaPlPl[10];    
		snprintf(nameDeltaPlPl, 10, "DeltaPlPl");    
		genkdeltaPlPl = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kDeltaPlPl, "DUMMY");
		genkdeltaPlPl->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameDeltaPlPl,genkdeltaPlPl);
		TF1 *fPtDeltaPlPl = genkdeltaPlPl->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kDeltaPlPl] = fPtDeltaPlPl->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kDeltaPlPl] = fPtDeltaPlPl->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}
	
	// Delta+
	if(fSelectedParticles&kGenDeltaPl){
		AliGenParam * genkdeltaPl=0;
		Char_t nameDeltaPl[10];    
		snprintf(nameDeltaPl, 10, "DeltaPl");    
		genkdeltaPl = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kDeltaPl, "DUMMY");
		genkdeltaPl->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameDeltaPl,genkdeltaPl);
		TF1 *fPtDeltaPl = genkdeltaPl->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kDeltaPl] = fPtDeltaPl->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kDeltaPl] = fPtDeltaPl->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}
	
	// Delta-
	if(fSelectedParticles&kGenDeltaMi){
		AliGenParam * genkdeltaMi=0;
		Char_t nameDeltaMi[10];    
		snprintf(nameDeltaMi, 10, "DeltaMi");    
		genkdeltaMi = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kDeltaMi, "DUMMY");
		genkdeltaMi->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameDeltaMi,genkdeltaMi);
		TF1 *fPtDeltaMi = genkdeltaMi->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kDeltaMi] = fPtDeltaMi->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kDeltaMi] = fPtDeltaMi->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}
	
	// Delta0
	if(fSelectedParticles&kGenDeltaZero){	
		AliGenParam * genkdeltaZero=0;
		Char_t nameDeltaZero[10];    
		snprintf(nameDeltaZero, 10, "DeltaZero");    
		genkdeltaZero = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kDeltaZero, "DUMMY");
		genkdeltaZero->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameDeltaZero,genkdeltaZero);
		TF1 *fPtDeltaZero = genkdeltaZero->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kDeltaZero] = fPtDeltaZero->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kDeltaZero] = fPtDeltaZero->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}
	
	// rho+
	if(fSelectedParticles&kGenRhoPl){	
		AliGenParam * genkrhoPl=0;
		Char_t nameRhoPl[10];    
		snprintf(nameRhoPl, 10, "RhoPl");    
		genkrhoPl = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kRhoPl, "DUMMY");
		genkrhoPl->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameRhoPl,genkrhoPl);
		TF1 *fPtRhoPl = genkrhoPl->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kRhoPl] = fPtRhoPl->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kRhoPl] = fPtRhoPl->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}

	// rho-
	if(fSelectedParticles&kGenRhoMi){	
		AliGenParam * genkrhoMi=0;
		Char_t nameRhoMi[10];    
		snprintf(nameRhoMi, 10, "RhoMi");    
		genkrhoMi = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kRhoMi, "DUMMY");
		genkrhoMi->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameRhoMi,genkrhoMi);
		TF1 *fPtRhoMi = genkrhoMi->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kRhoMi] = fPtRhoMi->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kRhoMi] = fPtRhoMi->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}

	// K0*
	if(fSelectedParticles&kGenK0star){	
		AliGenParam * genkK0star=0;
		Char_t nameK0star[10];    
		snprintf(nameK0star, 10, "K0star");    
		genkK0star = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kK0star, "DUMMY");
		genkK0star->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameK0star,genkK0star);
		TF1 *fPtK0star = genkK0star->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kK0star] = fPtK0star->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kK0star] = fPtK0star->Integral(fPtMin,fPtMax,(Double_t*)0,1.e-6);
		#endif
	}

	// direct gamma
	if(fDecayMode!=kGammaEM) return;

	if(fSelectedParticles&kGenDirectRealGamma){
		AliGenParam *genDirectRealG=0;
		Char_t nameDirectRealG[10];    
		snprintf(nameDirectRealG,10,"DirectRealGamma");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genDirectRealG = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kDirectRealGamma, "DUMMY");
		genDirectRealG->SetYRange(fYMin, fYMax);
		AddSource2Generator(nameDirectRealG,genDirectRealG);
		TF1 *fPtDirectRealG = genDirectRealG->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kDirectRealGamma] = fPtDirectRealG->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kDirectRealGamma] = fPtDirectRealG->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}

	if(fSelectedParticles&kGenDirectVirtGamma){
		TDatabasePDG::Instance()->AddParticle("DirectVirtGamma","DirectVirtGamma",0,true,0,0,"GaugeBoson",220000);
		AliGenParam *genDirectVirtG=0;
		Char_t nameDirectVirtG[10];    
		snprintf(nameDirectVirtG,10,"DirectVirtGamma");    
		// NOTE: the additional factors are set back to one as they are not the same for photons and electrons
		genDirectVirtG = new AliGenParam(fNPart, new AliGenEMlib(), AliGenEMlib::kDirectVirtGamma, "DUMMY");
		genDirectVirtG->SetYRange(fYMin, fYMax);	
		AddSource2Generator(nameDirectVirtG,genDirectVirtG);
		TF1 *fPtDirectVirtG = genDirectVirtG->GetPt();
		#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,0)
			fYieldArray[kDirectVirtGamma] = fPtDirectVirtG->Integral(fPtMin,fPtMax,1.e-6);
		#else
			fYieldArray[kDirectVirtGamma] = fPtDirectVirtG->Integral(fPtMin,fPtMax,(Double_t *)0,1.e-6);
		#endif
	}
}

//-------------------------------------------------------------------
void AliGenEMCocktail::AddSource2Generator(Char_t* nameSource, 
					 AliGenParam* const genSource)
{
	// add sources to the cocktail
	Double_t phiMin = fPhiMin*180./TMath::Pi();
	Double_t phiMax = fPhiMax*180./TMath::Pi();

	genSource->SetPtRange(fPtMin, fPtMax);  
	genSource->SetPhiRange(phiMin, phiMax);
	genSource->SetWeighting(fWeightingMode);
	genSource->SetForceGammaConversion(fForceConv);
	if (!TVirtualMC::GetMC()) genSource->SetDecayer(fDecayer);  
	genSource->Init();
		
	AddGenerator(genSource,nameSource,1.); // Adding Generator    
}

//-------------------------------------------------------------------
void AliGenEMCocktail::Init()
{
	// Initialisation
	TIter next(fEntries);
	AliGenCocktailEntry *entry;
	if (fStack) {
		while((entry = (AliGenCocktailEntry*)next())) {
		entry->Generator()->SetStack(fStack);
		}
	}
}

//_________________________________________________________________________
void AliGenEMCocktail::Generate()
{
	// Generate event 
	TIter next(fEntries);
	AliGenCocktailEntry *entry = 0;
	AliGenerator* gen = 0;

	if (fHeader) delete fHeader;
	fHeader = new AliGenCocktailEventHeader("Electromagnetic Cocktail Header");

	const TObjArray *partArray = gAlice->GetMCApp()->Particles();
		
	// Generate the vertex position used by all generators    
	if(fVertexSmear == kPerEvent) Vertex();

	//Reseting stack
	AliRunLoader * runloader = AliRunLoader::Instance();
	if (runloader)
		if (runloader->Stack())
		runloader->Stack()->Clean();
	
	// Loop over generators and generate events
	Int_t igen = 0;
	Float_t evPlane;
	Rndm(&evPlane,1);
	evPlane*=TMath::Pi()*2;
	while((entry = (AliGenCocktailEntry*)next())) {
		gen = entry->Generator();
		gen->SetVertex(fVertex.At(0), fVertex.At(1), fVertex.At(2));
		
		if (fNPart > 0) {
		igen++;	
		if (igen == 1) entry->SetFirst(0);		
		else  entry->SetFirst((partArray->GetEntriesFast())+1);
		gen->SetEventPlane(evPlane);
		gen->Generate();
		entry->SetLast(partArray->GetEntriesFast());
		}
	}  
	next.Reset();

	// Setting weights for proper absolute normalization
	Int_t iPart, iMother;
	Int_t pdgMother = 0;
	Double_t weight = 0.;
	Double_t dNdy = 0.;
	Int_t maxPart = partArray->GetEntriesFast();
	for(iPart=0; iPart<maxPart; iPart++){      
		TParticle *part = gAlice->GetMCApp()->Particle(iPart);
		iMother = part->GetFirstMother();
		TParticle *mother = 0;
		if (iMother>=0){
			mother = gAlice->GetMCApp()->Particle(iMother);
			pdgMother = mother->GetPdgCode();
		} else pdgMother = part->GetPdgCode();

		switch (pdgMother){
			case 111:
				dNdy = fYieldArray[kPizero];
				break;
			case 221:
				dNdy = fYieldArray[kEta];
				break;
			case 113:
				dNdy = fYieldArray[kRho0];
				break;
			case 223:
				dNdy = fYieldArray[kOmega];
				break;
			case 331:
				dNdy = fYieldArray[kEtaprime];
				break;
			case 333:
				dNdy = fYieldArray[kPhi];
				break;
			case 443:
				dNdy = fYieldArray[kJpsi];
				break;
			case 22:
				dNdy = fYieldArray[kDirectRealGamma];
				break;
			case 220000:
				dNdy = fYieldArray[kDirectVirtGamma];
				break;
			case 3212:
				dNdy = fYieldArray[kSigma0];
				break;				
			case 310:
				dNdy = fYieldArray[kK0s];
				break;
			case 2224:
				dNdy = fYieldArray[kDeltaPlPl];
				break;
			case 2214:
				dNdy = fYieldArray[kDeltaPl];
				break;
			case 1114:
				dNdy = fYieldArray[kDeltaMi];
				break;
			case 2114:
				dNdy = fYieldArray[kDeltaZero];
				break;
			case 213:	
				dNdy = fYieldArray[kRhoPl];
				break;
			case -213:	
				dNdy = fYieldArray[kRhoMi];
				break;
			case 313:	
				dNdy = fYieldArray[kK0star];
				break;
			default:
				dNdy = 0.;
		}

		weight = dNdy*part->GetWeight();
		part->SetWeight(weight);
	}	
	
	fHeader->SetNProduced(maxPart);


	TArrayF eventVertex;
	eventVertex.Set(3);
	for (Int_t j=0; j < 3; j++) eventVertex[j] = fVertex[j];
	
	fHeader->SetPrimaryVertex(eventVertex);

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