ROOT logo
AliRoot » EVGEN » AliGenAfterBurnerFlow

class AliGenAfterBurnerFlow: public AliGenerator


 AliGenAfterBurnerFlow is a After Burner event generator applying flow.
 The generator changes Phi coordinate of the particle momentum.
 Flow (directed and elliptical) can be defined on particle type level

 Author:
 Sylwester Radomski, 2002
 Martin Poghosyan, 2008
 Constantin Loizides, 2010

Function Members (Methods)

public:
AliGenAfterBurnerFlow()
AliGenAfterBurnerFlow(Float_t reactionPlane)
virtual~AliGenAfterBurnerFlow()
voidAarbitraryReactionPlaneAngle()
voidTObject::AbstractMethod(const char* method) const
virtual voidAliGenerator::AddHeader(AliGenEventHeader*)
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 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 voidAliGenerator::FinishRun()
virtual voidGenerate()
virtual voidAliGenerator::GenerateN(Int_t ntimes)
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 voidInit()
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
Bool_tIsPrimary(Int_t pdg) 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
voidNeglectFlow(Int_t pdg)
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)
virtual voidAliGenerator::SetCollisionGeometry(AliCollisionGeometry* geom)
virtual voidAliGenerator::SetContainer(AliGenerator* container)
virtual voidAliGenerator::SetCutVertexZ(Float_t cut = 999999.)
voidSetDirectedParam(Int_t pdg, Float_t v11, Float_t v12 = 0, Float_t v13 = 1, Float_t v14 = 0)
voidSetDirectedSimple(Int_t pdg, Float_t v1)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetEllipticParam(Int_t pdg, Float_t v00, Float_t v10, Float_t v11, Float_t v22)
voidSetEllipticParamOld(Int_t pdg, Float_t v21, Float_t v22, Float_t v23)
voidSetEllipticParamPion(Int_t pdg, Float_t v21, Float_t pTmax, Float_t v22 = 0.)
voidSetEllipticSimple(Int_t pdg, Float_t v2)
virtual voidAliGenerator::SetEnergyCMS(Float_t energy = 0)
virtual voidAliGenerator::SetEventPlane(Float_t evPlane)
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)
voidSetNpDefault()
voidSetNpParams(Int_t order = -1, Float_t p0 = -1, Float_t p1 = -1, Float_t p2 = -1, Float_t p3 = -1)
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 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)
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 voidAliGenerator::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()
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)

Data Members

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
Float_tAliGenerator::fEvPlanethe event plane
TGenerator*AliGenerator::fMCEvGen!Pointer to the generator
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
TStringAliGenerator::fProjectileProjectile
Float_tAliGenerator::fPtMaxMaximum transverse momentum
Float_tAliGenerator::fPtMinMinimum transverse momentum
TRandom*AliRndm::fRandom! Pointer to the random number generator
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
Int_tAliGenerator::fTrackItif 1, Track final state particles
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
private:
Int_tfCountercounter
Int_tfHowChoose reaction plane angle
Bool_tfIsPrim[5226]array of primaries
Float_tfNpParams[5]parameters (0: order, 1-4: actual parameters)
Float_tfParams[300][7]parameters (0: pdg, 1: order, 2: type, 3-6: actual parameters)
Float_tfReactionPlaneReaction plane angle (in rad)
AliStack*fStack!
static const Int_tfgkNSize of array fParams
static const Int_tfgkPDGSize of PDG code array

Class Charts

Inheritance Chart:
TNamed
AliRndm
AliGenerator
AliGenAfterBurnerFlow

Function documentation

AliGenAfterBurnerFlow()
 Default Construction
AliGenAfterBurnerFlow(Float_t reactionPlane)
 reactionPlane - Reaction Plane Angle given in Deg [0-360]
 but stored and applied in radiants (standard for TParticle & AliCollisionGeometry)
~AliGenAfterBurnerFlow()
 def. dest.
void SetDirectedSimple(Int_t pdg, Float_t v1)
 Set Directed Flow
 The same directed flow is applied to all specified particles
 independently on transverse momentum or rapidity

 PDG - particle type to apply directed flow
       if (PDG == 0) use as default

void SetDirectedParam(Int_t pdg, Float_t v11, Float_t v12 = 0, Float_t v13 = 1, Float_t v14 = 0)
 Set Directed Flow
 Directed flow is parameterised as follows

 V1(Pt,Y) = (V11 + V12*Pt) * sign(Y) * (V13 + V14 * abs(Y)^3)

 where sign = 1 for Y > 0 and -1 for Y < 0

 Defaults values
 v12 = v14 = 0
 v13 = 1

 PDG - particle type to apply directed flow
       if (PDG == 0) use as default

void SetEllipticSimple(Int_t pdg, Float_t v2)
 Set Elliptic Flow
 The same Elliptic flow is applied to all specified particles
 independently on transverse momentum or rapidity

 PDG - particle type to apply directed flow
       if (PDG == 0) use as default

 V2 - flow coefficient

 NOTE: for starting playing with FLOW
       start with this function and values 0.05 - 0.1

void SetEllipticParam(Int_t pdg, Float_t v00, Float_t v10, Float_t v11, Float_t v22)
 Set Elliptic Flow

 Elliptic flow is parametrised to reproduce
 V2 of Pions at RHIC energies and is given by:

 V2 = (v00 + v10*pt + v11*pt^2) * exp (-v22 * y^2) and zero if V2<0.

void SetEllipticParamPion(Int_t pdg, Float_t v21, Float_t pTmax, Float_t v22 = 0.)
 Set Elliptic Flow

 Elliptic flow is parametrised to reproduce
 V2 of Pions at RHIC energies and is given by:

 V2 = v21 * (pT/pTMax ) * exp (-v22 * y^2)    where pT <= pTmax
      v21 * exp (-v22 * y^2)                  where pT > pTmax

 v21   - value at saturation
 pTmax - saturation transverse momentum
 v22   - rapidity decreasing

void SetEllipticParamOld(Int_t pdg, Float_t v21, Float_t v22, Float_t v23)
 Set Elliptic Flow

 Elliptic flow is parameterised using
 old MevSim parameterisation

 V2 = (V21 + V22 pT^2) * exp (-v22 * y^2)

void SetNpParams(Int_t order = -1, Float_t p0 = -1, Float_t p1 = -1, Float_t p2 = -1, Float_t p3 = -1)
 Set npart parameterization.

void SetFlowParameters(Int_t pdg, Int_t order, Int_t type, Float_t v1, Float_t v2, Float_t v3, Float_t v4)
 private function

void Init()
 Standard AliGenerator Initializer

Float_t GetCoefficient(Int_t pdg, Int_t n, Float_t Pt, Float_t Y) const
 private function
 Return Flow Coefficient for a given particle type flow order
 and particle momentum (Pt, Y)

Float_t GetNpNorm(Int_t npart) const
 Calculate npart norm.

Bool_t IsPrimary(Int_t pdg) const
void InitPrimaries()
 Init the primary particle list
void Generate()
 AliGenerator generate function doing actual job.
 Algorythm:

 1. loop over particles on the stack and choose primaries
 2. calculate delta phi
 3. change phi of primary particle and if it is non-stable
    then its daughters' phi and vertex also

 For more details see :
 M.G. Poghosyan
 PWG2 meeting on 06.05.2008 and 03.06.2008
void Rotate(Int_t i, Double_t phi, Bool_t IsPrim = kTRUE)
 Rotation
AliGenAfterBurnerFlow()
void AarbitraryReactionPlaneAngle()
{fHow = 3;}
void SetNpDefault()
{ SetNpParams(2,1,-5e-8,-5e-6); }
void NeglectFlow(Int_t pdg)
{fIsPrim[pdg]=kFALSE;}
AliGenAfterBurnerFlow& operator=(const AliGenAfterBurnerFlow& )