ROOT logo
AliRoot » STEER » STEERBASE » AliStack

class AliStack: public TVirtualMCStack


Particles stack class
Implements the TMCVirtualStack of the Virtual Monte Carlo
Holds the particles transported during simulation
Is used to compare results of reconstruction with simulation
Author A.Morsch


Function Members (Methods)

public:
AliStack()
AliStack(const AliStack& st)
AliStack(Int_t size, const char* name = "")
virtual~AliStack()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
voidClean(Int_t size = 0)
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
voidConnectTree(TTree* tree)
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
voidDumpLoadedStack() const
voidDumpPart(Int_t i) const
voidDumpPStack()
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 TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidFinishEvent()
voidFlagTrack(Int_t track)
virtual Int_tGetCurrentParentTrackNumber() const
virtual TParticle*GetCurrentTrack() const
virtual Int_tGetCurrentTrackNumber() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Bool_tGetEvent()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual Int_tGetNprimary() const
virtual Int_tGetNtrack() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Int_tGetPrimary(Int_t id)
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::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 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_tIsPhysicalPrimary(Int_t i)
Bool_tIsSecondaryFromMaterial(Int_t index)
Bool_tIsSecondaryFromWeakDecay(Int_t index)
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
voidKeepTrack(Int_t itrack)
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
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)
AliStack&operator=(const AliStack& st)
virtual voidTObject::Paint(Option_t* option = "")
TParticle*Particle(Int_t id)
TParticle*ParticleFromTreeK(Int_t id) const
const TObjArray*Particles() const
virtual voidTObject::Pop()
virtual TParticle*PopNextTrack(Int_t& track)
virtual TParticle*PopPrimaryForTracking(Int_t i)
virtual voidTObject::Print(Option_t* option = "") const
Bool_tPurifyKine()
virtual voidPushTrack(Int_t done, Int_t parent, Int_t pdg, const Float_t* pmom, const Float_t* vpos, const Float_t* polar, Float_t tof, TMCProcess mech, Int_t& ntr, Float_t weight, Int_t is)
virtual voidPushTrack(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, Double_t weight, Int_t is)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
Bool_tReorderKine()
voidReset(Int_t size = 0)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidSetCurrentTrack(Int_t track)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetHighWaterMark(Int_t hgwmk)
voidSetNtrack(Int_t ntrack)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
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
Int_tTrackLabel(Int_t label) const
Int_t*TrackLabelMap()
TTree*TreeK() const
Int_tTreeKEntry(Int_t id) const
virtual voidTObject::UseCurrentStyle()
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
protected:
voidCleanParents()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
TParticle*GetNextParticle()
TParticle*GetParticleMapEntry(Int_t id) const
Bool_tIsStable(Int_t pdg) const
Bool_tKeepPhysics(const TParticle* part)
voidTObject::MakeZombie()
voidResetArrays(Int_t size)
private:
virtual voidCopy(TObject& st) const

Data Members

private:
Int_tfCurrent! Last track returned from the stack
Int_tfCurrentPrimary! Last primary track returned from the stack
TParticle*fCurrentTrack! Pointer to particle currently transported
Int_tfHgwmk! Last track purified
Int_tfLoadPoint! Next free position in the particle buffer
Int_tfNprimaryNumber of primaries
Int_tfNtrackNumber of tracks
TParticle*fParticleBuffer! Pointer to current particle for writing
TArrayIfParticleFileMapMap for particle ids
TObjArrayfParticleMap! Map of particles in the supporting TClonesArray
TClonesArrayfParticles! Pointer to list of particles
TArrayIfTrackLabelMap! Map of track labels
TTree*fTreeK! Particle stack

Class Charts

Inheritance Chart:
TVirtualMCStack
AliStack

Function documentation

AliStack()
 Default constructor

AliStack(Int_t size, const char* name = "")
  Constructor

AliStack(const AliStack& st)
 Copy constructor
void Copy(TObject& st) const
~AliStack()
 Destructor

void PushTrack(Int_t done, Int_t parent, Int_t pdg, const Float_t* pmom, const Float_t* vpos, const Float_t* polar, Float_t tof, TMCProcess mech, Int_t& ntr, Float_t weight, Int_t is)
 Load a track on the stack

 done     1 if the track has to be transported
          0 if not
 parent   identifier of the parent track. -1 for a primary
 pdg    particle code
 pmom     momentum GeV/c
 vpos     position
 polar    polarisation
 tof      time of flight in seconds
 mecha    production mechanism
 ntr      on output the number of the track stored

void 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, Double_t weight, Int_t is)
 Load a track on the stack

 done        1 if the track has to be transported
             0 if not
 parent      identifier of the parent track. -1 for a primary
 pdg         particle code
 kS          generation status code
 px, py, pz  momentum GeV/c
 vx, vy, vz  position
 polar       polarisation
 tof         time of flight in seconds
 mech        production mechanism
 ntr         on output the number of the track stored

 New method interface:
 arguments were changed to be in correspondence with TParticle
 constructor.
 Note: the energy is not calculated from the static mass but
 it is passed by argument e.
TParticle* PopNextTrack(Int_t& track)
 Returns next track from stack of particles

TParticle* PopPrimaryForTracking(Int_t i)
 Returns i-th primary particle if it is flagged to be tracked,
 0 otherwise

Bool_t PurifyKine()
 Compress kinematic tree keeping only flagged particles
 and renaming the particle id's in all the hits

Bool_t ReorderKine()
 In some transport code children might not come in a continuous sequence.
 In this case the stack  has  to  be reordered in order to establish the
 mother daughter relation using index ranges.

Bool_t KeepPhysics(const TParticle* part)
 Some particles have to kept on the stack for reasons motivated
 by physics analysis. Decision is put here.

void FinishEvent()
 Write out the kinematics that was not yet filled

void FlagTrack(Int_t track)
 Flags a track and all its family tree to be kept

void KeepTrack(Int_t itrack)
 Flags a track to be kept

void Clean(Int_t size = 0)
 Reset stack data except for fTreeK

void Reset(Int_t size = 0)
 Reset stack data including fTreeK

void ResetArrays(Int_t size)
 Resets stack arrays

void SetHighWaterMark(Int_t hgwmk)
 Set high water mark for last track in event

TParticle* Particle(Int_t id)
 Return particle with specified ID
TParticle* ParticleFromTreeK(Int_t id) const
 return pointer to TParticle with label id

Int_t TreeKEntry(Int_t id) const
 Return entry number in the TreeK for particle with label id
 Return negative number if label>fNtrack

 The order of particles in TreeK reflects the order of the transport of primaries and production of secondaries:

 Before transport there are fNprimary particles on the stack.
 They are transported one by one and secondaries (fNtrack - fNprimary) are produced.
 After the transport of each particles secondaries are written to the TreeK
 They occupy the entries 0 ... fNtrack - fNprimary - 1
 The primaries are written after they have been transported and occupy
 fNtrack - fNprimary .. fNtrack - 1
Int_t GetCurrentParentTrackNumber() const
 Return number of the parent of the current track

Int_t GetPrimary(Int_t id)
 Return number of primary that has generated track

void DumpPart(Int_t i) const
 Dumps particle i in the stack

void DumpPStack()
 Dumps the particle stack

void DumpLoadedStack() const
 Dumps the particle in the stack
 that are loaded in memory.

void SetCurrentTrack(Int_t track)
void CleanParents()
 Clean particles stack
 Set parent/daughter relations

TParticle* GetNextParticle()
 Return next particle from stack of particles

void ConnectTree(TTree* tree)
  Creates branch for writing particles

Bool_t GetEvent()
 Get new event from TreeK
Bool_t IsStable(Int_t pdg) const
 Decide whether particle (pdg) is stable

Bool_t IsPhysicalPrimary(Int_t i)
 Test if a particle is a physical primary according to the following definition:
 Particles produced in the collision including products of strong and
 electromagnetic decay and excluding feed-down from weak decays of strange
 particles.

Bool_t IsSecondaryFromWeakDecay(Int_t index)
Bool_t IsSecondaryFromMaterial(Int_t index)
void SetNtrack(Int_t ntrack)
{ fNtrack = ntrack; }
Int_t GetNtrack() const
{ return fNtrack; }
Int_t GetNprimary() const
{ return fNprimary; }
Int_t GetCurrentTrackNumber() const
{ return fCurrent; }
const TObjArray* Particles() const
{ return &fParticleMap; }
TParticle* GetParticleMapEntry(Int_t id) const
{ return (TParticle*) fParticleMap.At(id); }
AliStack& operator=(const AliStack& st)
{st.Copy(*this); return(*this);}
TParticle* GetCurrentTrack() const
{return fCurrentTrack;}
TTree* TreeK() const
{return fTreeK;}
Int_t TrackLabel(Int_t label) const
{return fTrackLabelMap[label];}
Int_t* TrackLabelMap()
{return fTrackLabelMap.GetArray();}