ROOT logo
AliRoot » EVGEN » AliGenLightNuclei

class AliGenLightNuclei: public AliGenCocktail


 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)


Function Members (Methods)

public:
AliGenLightNuclei()
virtual~AliGenLightNuclei()
voidTObject::AbstractMethod(const char* method) const
virtual voidAliGenCocktail::AddGenerator(AliGenerator* Generator, const char* Name, Float_t RateExp, TFormula* formula = 0, Int_t ntimes = 1)
virtual voidAliGenCocktail::AddHeader(AliGenEventHeader* header)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual AliCollisionGeometry*AliGenerator::CollisionGeometry() const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual TList*AliGenCocktail::Entries()
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual voidAliGenCocktail::FinishRun()
AliGenCocktailEntry*AliGenCocktail::FirstGenerator()
voidAliGenCocktail::FirstGeneratorPair(AliGenCocktailEntry*& e1, AliGenCocktailEntry*& e2)
virtual voidGenerate()
virtual voidAliGenerator::GenerateN(Int_t ntimes)
Double_tGetCoalescenceMomentum() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual Float_tAliGenerator::GetEnergyCMS() const
virtual const char*TObject::GetIconName() const
virtual TGenerator*AliGenerator::GetMC() const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual voidAliGenerator::GetOrigin(TLorentzVector& o) const
virtual voidAliGenerator::GetOrigin(Float_t& ox, Float_t& oy, Float_t& oz) const
virtual voidAliGenerator::GetProjectile(TString& tar, Int_t& a, Int_t& z) const
virtual TRandom*AliRndm::GetRandom() const
AliStack*AliGenerator::GetStack()
virtual voidAliGenerator::GetTarget(TString& tar, Int_t& a, Int_t& z) const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidAliGenCocktail::Init()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tAliGenerator::NeedsCollisionGeometry() const
AliGenCocktailEntry*AliGenCocktail::NextGenerator()
voidAliGenCocktail::NextGeneratorPair(AliGenCocktailEntry*& e1, AliGenCocktailEntry*& e2)
virtual Bool_tTObject::Notify()
virtual Int_tAliGenerator::NumberParticles() const
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual Bool_tAliGenerator::ProvidesCollisionGeometry() const
virtual Int_tTObject::Read(const char* name)
virtual voidAliRndm::ReadRandom(const char* filename)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual Float_tAliRndm::Rndm() const
virtual voidAliRndm::Rndm(Float_t* array, Int_t size) const
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
virtual voidAliGenerator::SetAnalog(Int_t flag = 1)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidAliGenerator::SetChildWeight(Float_t wgt)
voidSetCoalescenceMomentum(Double_t p0)
virtual voidAliGenerator::SetCollisionGeometry(AliCollisionGeometry* geom)
virtual voidAliGenerator::SetContainer(AliGenerator* container)
virtual voidAliGenerator::SetCutVertexZ(Float_t cut = 999999.)
voidSetDeuterons(Bool_t flag = kTRUE)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidAliGenerator::SetEnergyCMS(Float_t energy = 0)
virtual voidAliGenerator::SetEventPlane(Float_t evPlane)
voidSetHe3Nuclei(Bool_t flag = kTRUE)
voidSetHe4Nuclei(Bool_t flag = kTRUE)
virtual voidAliGenerator::SetMC(TGenerator* theMC)
virtual voidAliGenerator::SetMomentumRange(Float_t pmin = 0, Float_t pmax = 1.e10)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
virtual voidAliGenerator::SetNumberParticles(Int_t npart = 100)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidAliGenerator::SetOrigin(const TLorentzVector& o)
virtual voidAliGenerator::SetOrigin(Float_t ox, Float_t oy, Float_t oz)
virtual voidAliGenerator::SetParentWeight(Float_t wgt)
virtual voidAliGenerator::SetPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
voidAliGenerator::SetPileUpTimeWindow(Float_t pileUpTimeW)
virtual voidAliGenerator::SetProjectile(TString proj = "", Int_t a = 0, Int_t z = 0)
virtual voidAliGenerator::SetPtRange(Float_t ptmin = 0, Float_t ptmax = 1.e10)
virtual voidAliRndm::SetRandom(TRandom* ran = 0)
virtual voidAliGenCocktail::SetRandomise(Bool_t flag)
virtual voidAliGenerator::SetSigma(Float_t sx, Float_t sy, Float_t sz)
virtual voidAliGenerator::SetSigmaZ(Float_t sz)
voidAliGenerator::SetStack(AliStack* stack)
virtual voidAliGenerator::SetTarget(TString tar = "", Int_t a = 0, Int_t z = 0)
virtual voidAliGenerator::SetThetaRange(Float_t thetamin = 0, Float_t thetamax = 180)
virtual voidAliGenerator::SetTime(Float_t time)
virtual voidAliGenerator::SetTimeOrigin(Float_t timeorig)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidAliGenerator::SetTrackingFlag(Int_t flag = 1)
voidSetTritons(Bool_t flag = kTRUE)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidAliGenerator::SetVertex(Float_t vx, Float_t vy, Float_t vz, Float_t t = 0)
voidAliGenerator::SetVertexGenerator(AliVertexGenerator* vertexGenerator)
virtual voidAliGenCocktail::SetVertexSmear(VertexSmear_t smear)
virtual voidAliGenerator::SetVertexSource(VertexSource_t source = kInternal)
virtual voidAliGenerator::SetVRange(Float_t vxmin, Float_t vxmax, Float_t vymin, Float_t vymax, Float_t vzmin, Float_t vzmax)
virtual voidAliGenerator::SetYRange(Float_t ymin = -100, Float_t ymax = 100)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidAliGenCocktail::UsePerEventRates()
voidAliGenerator::Vertex()
voidAliGenerator::VertexExternal()
virtual voidAliGenerator::VertexInternal()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
virtual voidAliRndm::WriteRandom(const char* filename) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual voidAliGenerator::KeepTrack(Int_t itrack)
voidTObject::MakeZombie()
virtual voidAliGenerator::PushTrack(Int_t done, Int_t parent, Int_t pdg, Float_t* pmom, Float_t* vpos, Float_t* polar, Float_t tof, TMCProcess mech, Int_t& ntr, Float_t weight = 1, Int_t is = 0)
virtual voidAliGenerator::PushTrack(Int_t done, Int_t parent, Int_t pdg, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t tof, Double_t polx, Double_t poly, Double_t polz, TMCProcess mech, Int_t& ntr, Float_t weight = 1, Int_t is = 0)
virtual voidAliGenerator::SetHighWaterMark(Int_t nt)
private:
AliGenLightNuclei(const AliGenLightNuclei& other)
Bool_tCoalescence(const TParticle* n1, const TParticle* n2) const
TParticle*FindPartner(const TParticle* n0, const TList* nucleons, const TParticle* nx = 0) const
Int_tGenerateDeuterons(const TList* protons, const TList* neutrons)
Int_tGenerateHe3Nuclei(const TList* protons, const TList* neutrons)
Int_tGenerateHe4Nuclei(const TList* protons, const TList* neutrons)
Int_tGenerateTritons(const TList* protons, const TList* neutrons)
Double_tGetPcm(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
Double_tGetS(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
AliGenLightNuclei&operator=(const AliGenLightNuclei& other)
voidPushDeuteron(TParticle* parent1, TParticle* parent2)
voidPushHe3Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3)
voidPushHe4Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3, TParticle* parent4)
voidPushNucleus(Int_t pdg, Double_t mass, TParticle* parent1, TParticle* parent2, TParticle* parent3 = 0, TParticle* parent4 = 0)
voidPushTriton(TParticle* parent1, TParticle* parent2, TParticle* parent3)

Data Members

public:
enum { kDeuteron
kAntiDeuteron
kTriton
kAntiTriton
kHe3Nucleus
kAntiHe3Nucleus
kAlpha
kAntiAlpha
kCluster
};
enum AliGenerator::[unnamed] { kThetaRange
kVertexRange
kPhiRange
kPtRange
kYRange
kMomentumRange
kEtaRange
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Int_tAliGenerator::fAProjectileProjectile A
Int_tAliGenerator::fATargetTarget A
Int_tAliGenerator::fAnalogFlag for anolog or pt-weighted generation
Float_tAliGenerator::fChildWeightChildWeight
AliCollisionGeometry*AliGenerator::fCollisionGeometry!Collision geometry
AliGenerator*AliGenerator::fContainer! Local pointer to container
Float_tAliGenerator::fCutVertexZVertex cut in units of sigma_z
Float_tAliGenerator::fEnergyCMSCentre of mass energy
TList*AliGenCocktail::fEntriesList of Generators
Float_tAliGenerator::fEvPlanethe event plane
AliGenCocktailEventHeader*AliGenCocktail::fHeader!Header container
TGenerator*AliGenerator::fMCEvGen!Pointer to the generator
Int_tAliGenCocktail::fNGeneratorsNumber of generators booked
TStringTNamed::fNameobject identifier
Int_tAliGenerator::fNpartMaximum number of particles per event
TArrayFAliGenerator::fOriginOrigin of event
TArrayFAliGenerator::fOsigmaSigma of the Origin of event
Float_tAliGenerator::fPMaxMinimum momentum of generation in GeV/c
Float_tAliGenerator::fPMinMinimum momentum of generation in GeV/c
Float_tAliGenerator::fParentWeightParent Weight
Float_tAliGenerator::fPhiMaxMaximum phi of generation in radians
Float_tAliGenerator::fPhiMinMinimum phi of generation in radians
Float_tAliGenerator::fPileUpTimeWindowTime window for pile-up events
TArrayFAliGenCocktail::fProbProbability of an event (if fSRandom == kTRUE)
TStringAliGenerator::fProjectileProjectile
Float_tAliGenerator::fPtMaxMaximum transverse momentum
Float_tAliGenerator::fPtMinMinimum transverse momentum
TRandom*AliRndm::fRandom! Pointer to the random number generator
Bool_tAliGenCocktail::fSRandomFlag to select random generator from list
AliStack*AliGenerator::fStack! Local pointer to stack
TStringAliGenerator::fTargetTarget
Float_tAliGenerator::fThetaMaxMaximum theta of generation in radians
Float_tAliGenerator::fThetaMinMinimum theta of generation in radians
Float_tAliGenerator::fTimeEvent time smeared around time0 origin using sigma vertex
Float_tAliGenerator::fTimeOriginTime0 origin in a run or event sample
TStringTNamed::fTitleobject title
Float_tAliGenCocktail::fTotalRateTotal rate of the generators booked
Int_tAliGenerator::fTrackItif 1, Track final state particles
Bool_tAliGenCocktail::fUsePerEventRateFlag to generate the events according to the rate per event
TArrayFAliGenerator::fVMaxMinimum Decaylength
TArrayFAliGenerator::fVMinMinimum Decaylength
TArrayFAliGenerator::fVertex! Vertex of current event
AliVertexGenerator*AliGenerator::fVertexGenerator! Generator for the vertex
VertexSmear_tAliGenerator::fVertexSmearVertex Smearing mode
VertexSource_tAliGenerator::fVertexSourceVertex source (internal/external)
Float_tAliGenerator::fYMaxMaximum rapidity
Float_tAliGenerator::fYMinMinimum rapidity
Int_tAliGenerator::fZProjectileProjectile Z
Int_tAliGenerator::fZTargetTarget Z
TObjLink*AliGenCocktail::flnk1! Iterator for first generator
TObjLink*AliGenCocktail::flnk2! Iterator for second generator
private:
Bool_tfGenDeuteronsgenerate deuterons and anti-deuterons
Bool_tfGenHe3Nucleigenerate He3 and anti-He3 nuclei
Bool_tfGenHe4Nucleigenerate He4 and anti-He4 nuclei
Bool_tfGenTritonsgenerate tritons and anti-tritons
Double_tfP0coalescence momentum (radius of the sphere)

Class Charts

Inheritance Chart:
TNamed
AliRndm
AliGenerator
AliGenCocktail
AliGenLightNuclei

Function documentation

AliGenLightNuclei()
 default constructor

~AliGenLightNuclei()
 default destructor

void Generate()
 delegate the particle generation to the cocktail
 and modify the stack adding the light nuclei

Bool_t 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,...)

TParticle* FindPartner(const TParticle* n0, const TList* nucleons, const TParticle* nx = 0) const
 find the first nucleon partner within a sphere of radius p0
 centered at n0 and exclude nucleon nx

Int_t 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 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 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 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)

void PushDeuteron(TParticle* parent1, TParticle* parent2)
 push a deuteron to the particle stack

void PushTriton(TParticle* parent1, TParticle* parent2, TParticle* parent3)
 push a triton to the particle stack

void PushHe3Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3)
 push a He3 nucleus to the particle stack

void PushHe4Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3, TParticle* parent4)
 push a He4 nucleus to the particle stack

void PushNucleus(Int_t pdg, Double_t mass, TParticle* parent1, TParticle* parent2, TParticle* parent3 = 0, TParticle* parent4 = 0)
 push a nucleus to the stack and tag the parents with the kCluster status code

Double_t 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 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

AliGenLightNuclei()
Double_t GetCoalescenceMomentum() const
{ return fP0; }
void SetCoalescenceMomentum(Double_t p0)
{ fP0 = p0; }
void SetDeuterons(Bool_t flag = kTRUE)
{ fGenDeuterons = flag; }
void SetTritons(Bool_t flag = kTRUE)
{ fGenTritons = flag; }
void SetHe3Nuclei(Bool_t flag = kTRUE)
{ fGenHe3Nuclei = flag; }
void SetHe4Nuclei(Bool_t flag = kTRUE)
{ fGenHe4Nuclei = flag; }
AliGenLightNuclei& operator=(const AliGenLightNuclei& other)