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

////////////////////////////////////////////////////////////////////
//
// Afterburner to generate light nuclei for event generators
// such as PYTHIA and PHOJET
//
// Light nuclei are generated whenever a cluster of nucleons is found
// within a sphere of radius p0 (coalescence momentum), i.e. have the
// same momentum.
//
// By default it starts with He4 nuclei which are the most stable,
// then He3 nuclei and tritons and finally deuterons. It can also generate
// a single nucleus species by disabling the others.
//
// Sample code for PYTHIA:
//
//    AliGenLightNuclei* gener = new AliGenLightNuclei();
//
//    AliGenPythia* pythia = new AliGenPythia(-1);
//    pythia->SetCollisionSystem("p+", "p+");
//    pythia->SetEnergyCMS(7000);
//
//    gener->UsePerEventRates();
//    gener->AddGenerator(pythia, "PYTHIA", 1);
//    gener->SetCoalescenceMomentum(0.200); // default (GeV/c)
//
//////////////////////////////////////////////////////////////////////

//
// Author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
//

#include "TMath.h"
#include "TPDGCode.h"
#include "TMCProcess.h"
#include "TList.h"
#include "TVector3.h"
#include "TParticle.h"
#include "AliStack.h"
#include "AliRun.h"
#include "AliLog.h"
#include "AliMC.h"
#include "AliGenLightNuclei.h"

ClassImp(AliGenLightNuclei)

AliGenLightNuclei::AliGenLightNuclei()
:AliGenCocktail()
,fP0(0.200)
,fGenDeuterons(kTRUE)
,fGenTritons(kTRUE)
,fGenHe3Nuclei(kTRUE)
,fGenHe4Nuclei(kTRUE)
{
//
// default constructor
//
}

AliGenLightNuclei::~AliGenLightNuclei()
{
//
// default destructor
//
}

void AliGenLightNuclei::Generate()
{
//
// delegate the particle generation to the cocktail
// and modify the stack adding the light nuclei
//
	AliGenCocktail::Generate();
	
	// find the nucleons and anti-nucleons
	
	TList* protons      = new TList();
	TList* neutrons     = new TList();
	TList* antiprotons  = new TList();
	TList* antineutrons = new TList();
	
	for (Int_t i=0; i < fStack->GetNprimary(); ++i)
	{
		TParticle* iParticle = fStack->Particle(i);
		
		if(iParticle->GetStatusCode() != 1) continue;
		
		switch(iParticle->GetPdgCode())
		{
			case kProton:
				protons->Add(iParticle);
				break;
			case kNeutron:
				neutrons->Add(iParticle);
				break;
			case kProtonBar:
				antiprotons->Add(iParticle);
				break;
			case kNeutronBar:
				antineutrons->Add(iParticle);
				break;
			default:
				break;
		}
	}
	
	// do not delete content
	protons->SetOwner(kFALSE);
	neutrons->SetOwner(kFALSE);
	antiprotons->SetOwner(kFALSE);
	antineutrons->SetOwner(kFALSE);
	
	// first try with He4 nuclei which are the most stable
	
	if(fGenHe4Nuclei)
	{
		this->GenerateHe4Nuclei(protons, neutrons);
		this->GenerateHe4Nuclei(antiprotons, antineutrons);
	}
	
	// then He3 nuclei
	
	if(fGenHe3Nuclei)
	{
		this->GenerateHe3Nuclei(protons, neutrons);
		this->GenerateHe3Nuclei(antiprotons, antineutrons);
	}
	
	// then tritons
	
	if(fGenTritons)
	{
		this->GenerateTritons(protons, neutrons);
		this->GenerateTritons(antiprotons, antineutrons);
	}
	
	// and finally deuterons
	
	if(fGenDeuterons)
	{
		this->GenerateDeuterons(protons, neutrons);
		this->GenerateDeuterons(antiprotons, antineutrons);
	}
	
	protons->Clear("nodelete");
	neutrons->Clear("nodelete");
	antiprotons->Clear("nodelete");
	antineutrons->Clear("nodelete");
	
	delete protons;
	delete neutrons;
	delete antiprotons;
	delete antineutrons;
}

Bool_t AliGenLightNuclei::Coalescence(const TParticle* n1, const TParticle* n2) const
{
//
// returns true if the nucleons are inside of an sphere of radius p0
// (assume the nucleons are in the same place e.g. PYTHIA, PHOJET,...)
//
	Double_t deltaP = 2.*this->GetPcm(n1->Px(), n1->Py(), n1->Pz(), n1->GetMass(), 
	                                  n2->Px(), n2->Py(), n2->Pz(), n2->GetMass());
	
	return ( deltaP < fP0);
}

TParticle* AliGenLightNuclei::FindPartner(const TParticle* n0, const TList* nucleons, const TParticle* nx) const
{
//
// find the first nucleon partner within a sphere of radius p0
// centered at n0 and exclude nucleon nx
//
	TIter n_next(nucleons);
	while(TParticle* n1 = dynamic_cast<TParticle*>( n_next()) )
	{
		if(n1 == 0) continue;
		if(n1 == nx) continue;
		if(n1->GetStatusCode() == kCluster) continue;
		if( !this->Coalescence(n0, n1) ) continue;
		return n1;
	}
	
	return 0;
}

Int_t AliGenLightNuclei::GenerateDeuterons(const TList* protons, const TList* neutrons)
{
//
// a deuteron is generated from a pair of p-n nucleons
// (the center of the sphere is one of the nucleons)
//
	Int_t npart = 0;
	
	TIter p_next(protons);
	while(TParticle* n0 = dynamic_cast<TParticle*>(p_next()) )
	{
		if(n0 == 0) continue;
		if(n0->GetStatusCode() == kCluster) continue;
		
		TParticle* partner = this->FindPartner(n0, neutrons, 0);
		
		if(partner == 0) continue;
		
		this->PushDeuteron(n0, partner);
		
		++npart;
	}
	
	return npart;
}

Int_t AliGenLightNuclei::GenerateTritons(const TList* protons, const TList* neutrons)
{
//
// a triton is generated from a cluster of p-n-n nucleons with same momentum
// (triangular configuration)
//
	Int_t npart = 0;
	
	TIter p_next(protons);
	while(TParticle* n0 = dynamic_cast<TParticle*>(p_next()) )
	{
		if(n0 == 0) continue;
		if(n0->GetStatusCode() == kCluster) continue;
		
		TParticle* partner1 = this->FindPartner(n0, neutrons, 0);
		
		if(partner1 == 0) continue;
		
		TParticle* partner2 = this->FindPartner(n0, neutrons, partner1);
		
		if(partner2 == 0) continue;
		
		// check that the partners coalesce between themselves
		
		if(!this->Coalescence(partner1, partner2)) continue;
		
		this->PushTriton(n0, partner1, partner2);
		
		++npart;
	}
	
	return npart;
}

Int_t AliGenLightNuclei::GenerateHe3Nuclei(const TList* protons, const TList* neutrons)
{
//
// a He3 nucleus is generated from a cluster of p-n-p nucleons with same momentum
// (triangular configuration)
//
	Int_t npart = 0;
	
	TIter p_next(protons); // center of the sphere
	while(TParticle* n0 = dynamic_cast<TParticle*>(p_next()) )
	{
		if(n0 == 0) continue;
		if(n0->GetStatusCode() == kCluster) continue;
		
		TParticle* partner1 = this->FindPartner(n0, neutrons, 0);
		
		if(partner1 == 0) continue;
		
		TParticle* partner2 = this->FindPartner(n0, protons, n0);
		
		if(partner2 == 0) continue;
		
		// check that the partners coalesce between themselves
		
		if(!this->Coalescence(partner1, partner2)) continue;
		
		this->PushHe3Nucleus(n0, partner1, partner2);
		
		++npart;
	}
	
	return npart;
}

Int_t AliGenLightNuclei::GenerateHe4Nuclei(const TList* protons, const TList* neutrons)
{
//
// a He4 nucleus is generated from a cluster of p-n-p-n nucleons with same momentum
// (tetrahedron configuration)
//
	Int_t npart = 0;
	
	TIter p_next(protons); // center of the sphere
	while(TParticle* n0 = dynamic_cast<TParticle*>(p_next()) )
	{
		if(n0 == 0) continue;
		if(n0->GetStatusCode() == kCluster) continue;
		
		TParticle* partner1 = this->FindPartner(n0, neutrons, 0);
		
		if(partner1 == 0) continue;
		
		TParticle* partner2 = this->FindPartner(n0, protons, n0);
		
		if(partner2 == 0) continue;
		
		TParticle* partner3 = this->FindPartner(n0, neutrons, partner1);
		
		if(partner3 == 0) continue;
		
		// check that the partners coalesce between themselves
		
		if(!this->Coalescence(partner1, partner2)) continue;
		if(!this->Coalescence(partner1, partner3)) continue;
		if(!this->Coalescence(partner2, partner3)) continue;
		
		this->PushHe4Nucleus(n0, partner1, partner2, partner3 );
		
		++npart;
	}
	
	return npart;
}

void AliGenLightNuclei::PushDeuteron(TParticle* parent1, TParticle* parent2)
{
//
// push a deuteron to the particle stack
//
	Int_t pdg = ( parent1->GetPdgCode() > 0 ) ? kDeuteron : kAntiDeuteron;
	this->PushNucleus(pdg, 1.87561282, parent1, parent2);
}

void AliGenLightNuclei::PushTriton(TParticle* parent1, TParticle* parent2, TParticle* parent3)
{
//
// push a triton to the particle stack
//
	Int_t pdg = ( parent1->GetPdgCode() > 0 ) ? kTriton : kAntiTriton;
	this->PushNucleus(pdg, 2.80925, parent1, parent2, parent3);
}

void AliGenLightNuclei::PushHe3Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3)
{
//
// push a He3 nucleus to the particle stack
//
	Int_t pdg = ( parent1->GetPdgCode() > 0 ) ? kHe3Nucleus : kAntiHe3Nucleus;
	this->PushNucleus(pdg, 2.80923, parent1, parent2, parent3);
}

void AliGenLightNuclei::PushHe4Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3, TParticle* parent4)
{
//
// push a He4 nucleus to the particle stack
//
	Int_t pdg = ( parent1->GetPdgCode() > 0 ) ? kAlpha : kAntiAlpha;
	this->PushNucleus(pdg, 3.727417, parent1, parent2, parent3, parent4);
}

void AliGenLightNuclei::PushNucleus(Int_t pdg, Double_t mass, TParticle* parent1, TParticle* parent2, TParticle* parent3, TParticle* parent4)
{
//
// push a nucleus to the stack and tag the parents with the kCluster status code
//
	Int_t ntrk;
	
	// momentum
	TVector3 p1(parent1->Px(), parent1->Py(), parent1->Pz());
	TVector3 p2(parent2->Px(), parent2->Py(), parent2->Pz());
	TVector3 p3(0, 0, 0);
	TVector3 p4(0, 0, 0);
	if(parent3 != 0) p3.SetXYZ(parent3->Px(), parent3->Py(), parent3->Pz());
	if(parent4 != 0) p4.SetXYZ(parent4->Px(), parent4->Py(), parent4->Pz());
	
	// momentum
	TVector3 pN = p1+p2+p3+p4;
	
	// E^2 = p^2 + m^2
	Double_t energy = TMath::Sqrt(pN.Mag2() + mass*mass);
	
	// production vertex same as the parent1'
	TVector3 vN(parent1->Vx(), parent1->Vy(), parent1->Vz());
	
	Double_t weight = 1;
	Int_t is = 1; // final state particle
	
	// add a new nucleus to current event stack
	fStack->PushTrack(1, -1, pdg,
	                 pN.X(), pN.Y(), pN.Z(), energy,
	                 vN.X(), vN.Y(), vN.Z(), parent1->T(),
	                 0., 0., 0., kPNCapture, ntrk, weight, is);
	
	// change the status code of the parents
	parent1->SetStatusCode(kCluster);
	parent2->SetStatusCode(kCluster);
	if(parent3 != 0) parent3->SetStatusCode(kCluster);
	if(parent4 != 0) parent4->SetStatusCode(kCluster);
	
	// set no transport for the parents
	parent1->SetBit(kDoneBit);
	parent2->SetBit(kDoneBit);
	if(parent3 != 0) parent3->SetBit(kDoneBit);
	if(parent4 != 0) parent4->SetBit(kDoneBit);
}

Double_t AliGenLightNuclei::GetS(Double_t p1x, Double_t p1y, Double_t p1z, Double_t m1, Double_t p2x, Double_t p2y, Double_t p2z, Double_t m2) const
{
//
// square of the center of mass energy
//
	Double_t E1 = TMath::Sqrt( p1x*p1x + p1y*p1y + p1z*p1z + m1*m1);
	Double_t E2 = TMath::Sqrt( p2x*p2x + p2y*p2y + p2z*p2z + m2*m2);
	
	return (E1+E2)*(E1+E2) - ((p1x+p2x)*(p1x+p2x) + (p1y+p2y)*(p1y+p2y) + (p1z+p2z)*(p1z+p2z));
}

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