ROOT logo
AliRoot » EVGEN » AliGenPromptPhotons

class AliGenPromptPhotons: public AliGenerator

 author: Sergey Kiselev, ITEP, Moscow
 e-mail: Sergey.Kiselev@cern.ch
 tel.: 007 495 129 95 45

 Generator of prompt photons for the reaction A+B, sqrt(S)

 main assumptions:
 1. flat rapidity distribution
 2. all existing p+p(pbar) data at y_{c.m.} can be described by the function
           F(x_T) = (sqrt(s))^5 Ed^3sigma/d^3p, x_T = 2p_t/sqrt(s)
           all data points cover the region x_T: 0.01 - 0.6
    see Nucl.Phys.A783:577-582,2007, hep-ex/0609037
 3. binary scaling: for A+B at the impact parameter b
    Ed^3N^{AB}(b)/d^3p = Ed^3sigma^{pp}/d^3p A B T_{AB}(b),
    T_{AB}(b) - nuclear overlapping fuction, calculated in the Glauber approach,
                nuclear density is parametrized by a Woods-Saxon with nuclear radius
                R_A = 1.19 A^{1/3} - 1.61 A^{-1/3} fm and surface thickness a=0.54 fm
 4. nuclear effects (Cronin, shadowing, ...) are ignored

 input parameters:
       fAProjectile, fATarget - number of nucleons in a nucleus A and B
       fMinImpactParam - minimal impct parameter, fm
       fMaxImpactParam - maximal impct parameter, fm
       fEnergyCMS - sqrt(S) per nucleon pair, AGeV

       fYMin - minimal rapidity of photons
       fYMax - maximal rapidity of photons
       fPtMin - minimal p_t value of gamma, GeV/c
       fPtMax - maximal p_t value of gamma, GeV/c

 comparison with SPS and RHIC data, prediction for LHC can be found in
 arXiv:0811.2634 [nucl-th]

Function Members (Methods)

public:
AliGenPromptPhotons()
AliGenPromptPhotons(Int_t npart)
virtual~AliGenPromptPhotons()
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
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
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)
virtual voidSetAProjectile(Float_t a = 208)
virtual voidSetATarget(Float_t a = 208)
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.)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidSetEnergyCMS(Float_t energy = 5500.)
virtual voidAliGenerator::SetEventPlane(Float_t evPlane)
virtual voidSetImpactParameterRange(Float_t bmin = 0., Float_t bmax = 0.)
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 voidSetPtRange(Float_t ptmin = 0.1, Float_t ptmax = 10.)
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 voidSetYRange(Float_t ymin = -1., Float_t ymax = 1.)
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
static Double_tFitData(const Double_t* xx, const Double_t* par)
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)
static Double_tTA(const Double_t* xx, const Double_t* par)
static Double_tTAB(const Double_t* xx, const Double_t* par)
static Double_tTAxTB(const Double_t* xx, const Double_t* par)
static Double_tTB(const Double_t* xx, const Double_t* par)
static Double_tWSforNorm(const Double_t* xx, const Double_t* par)
static Double_tWSz(const Double_t* xx, const Double_t* par)
private:
AliGenPromptPhotons(const AliGenPromptPhotons& PromptPhotons)
AliGenPromptPhotons&operator=(const AliGenPromptPhotons& PromptPhotons)

Data Members

protected:
Float_tfAProjectileProjectile nucleus mass number
Int_tAliGenerator::fAProjectileProjectile A
Float_tfATargetTarget nucleus mass number
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_tfEnergyCMSCenter of mass energy
Float_tAliGenerator::fEnergyCMSCentre of mass energy
Float_tAliGenerator::fEvPlanethe event plane
TGenerator*AliGenerator::fMCEvGen!Pointer to the generator
Float_tfMaxImpactParammaximum impact parameter
Float_tfMinImpactParamminimum impact parameter
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
static TF1*fgDataPtd^{2}#sigma^{pp}/(dp_t dy) from data fit
static TF1*fgTAnuclear thickness function T_A(b) (1/fm**2)
static TF1*fgTABoverlap function T_AB(b) (1/fm**2)
static TF1*fgTAxTBs * TA(s) * 2 * Integral(0,phiMax) TB(phi(s,b))
static TF1*fgTBnuclear thickness function T_B(phi)=T_B(sqtr(s**2+b**2-2*s*b*cos(phi)))
static TF1*fgWSzAWood Saxon parameterisation for nucleus A
static TF1*fgWSzBWood Saxon parameterisation for nucleus B

Class Charts

Inheritance Chart:
TNamed
AliRndm
AliGenerator
AliGenPromptPhotons

Function documentation

AliGenPromptPhotons()
 Default constructor

AliGenPromptPhotons(Int_t npart)
 Standard constructor

~AliGenPromptPhotons()
 Standard destructor

void Init()
 Initialisation
void Generate()
 Generate thermal photons of a event

void SetPtRange(Float_t ptmin = 0.1, Float_t ptmax = 10.)
void SetYRange(Float_t ymin = -1., Float_t ymax = 1.)
Double_t FitData(const Double_t* xx, const Double_t* par)
 input:
 x[0] - p_t (GeV).
 par[0]=sqrt(s_NN) (GeV),

 output:
 d^{2}#sigma/(dp_t dy) (pb/GeV)


 d^{2}#sigma/(dp_t dy) = (2 pi p_t) Ed^{3}#sigma/d^{3}p

 data presentation: Nucl.Phys.A783:577-582,2007, hep-ex/0609037, fig.3
 F(x_t)=(#sqrt{s})^{5} Ed^{3}#sigma/d^{3}p

 approximate tabulation of F(x_t)
Double_t WSforNorm(const Double_t* xx, const Double_t* par)
 input:
 x[0] - r (fm)
 par[0] - R (fm), radius
 par[1] - d (fm), surface thickness

 output:
 4 pi r**2 /(1+exp((r-R)/d))

 Wood Saxon (WS) C/(1+exp((r-RA)/d)) (nuclons/fm^3)
 To get the normalization A = (Integral 4 pi r**2 dr WS):
 C = A / (Integral 4 pi r**2 dr 1/(1+exp((r-RA)/d)) )
 Thus me need 4 pi r**2 /(1+exp((r-RA)/d)) (1/fm)

Double_t WSz(const Double_t* xx, const Double_t* par)
 input:
 x[0] - z (fm)
 par[0] - R (fm), radius
 par[1] - d (fm), surface thickness
 par[2] - C (nucleons/fm**2), normalization factor
 par[3] - b (fm), impact parameter

 output:
  Wood Saxon Parameterisation
  as a function of z for fixed b (1/fm^3)

Double_t TA(const Double_t* xx, const Double_t* par)
 input:
 x[0] - b (fm), impact parameter
 par[0] - RAMAX (fm), max. value of projectile radius

 output:
 nuclear thickness function T_A(b) (1/fm^2)

Double_t TB(const Double_t* xx, const Double_t* par)
 input:
 x[0] - phi (rad)
 par[0] - RBMAX (fm), max. value of target radius
 par[1] - b (fm), impact parameter
 par[2] - s (fm)

 output:
  nuclear thickness function T_B(phi)=T_B(sqtr(s**2+b**2-2*s*b*cos(phi)))

Double_t TAxTB(const Double_t* xx, const Double_t* par)
 input:
 x[0] - s (fm)
 par[0] - RBMAX (fm), max. value of target radius
 par[1] - b (fm), impact parameter

 output:
  s * TA(s) * 2 * Integral(0,phiMax) TB(phi(s,b))

Double_t TAB(const Double_t* xx, const Double_t* par)
 input:
 x[0] - b (fm), impact parameter
 par[0] - RAMAX (fm), max. value of projectile radius
 par[1] - RAMAX (fm), max. value of target radius

 output:
 overlap function TAB(b) (1/fm**2)

AliGenPromptPhotons()
void SetAProjectile(Float_t a = 208)
 Setters
void SetATarget(Float_t a = 208)
{fATarget = a;}
void SetEnergyCMS(Float_t energy = 5500.)
{fEnergyCMS = energy;}
void SetImpactParameterRange(Float_t bmin = 0., Float_t bmax = 0.)