#include <TObject.h>
#include <TArrayI.h>
#include <TStopwatch.h>
-
-#include "AliMCProcess.h"
+#include <TVirtualMCStack.h>
+#include <TMCProcess.h>
class TObjArray;
class TClonesArray;
-class AliStack : public TObject
+class AliStack : public TVirtualMCStack
{
public:
// creators, destructors
virtual ~AliStack();
// methods
+ virtual void SetTrack(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, Int_t is);
+ virtual void SetTrack(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 TParticle* GetNextTrack(Int_t& track);
+ virtual TParticle* GetPrimaryForTracking(Int_t i);
+
void MakeTree(Int_t event, const char *file);
void BeginEvent(Int_t event);
void FinishRun();
Bool_t GetEvent(Int_t nevent);
- void SetTrack(Int_t done, Int_t parent, Int_t pdg,
- Float_t *pmom, Float_t *vpos, Float_t *polar,
- Float_t tof, AliMCProcess mech, Int_t &ntr,
- Float_t weight = 1, Int_t is = 0);
- void SetTrack(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,
- AliMCProcess mech, Int_t &ntr, Float_t weight = 1,
- Int_t is = 0);
- void GetNextTrack(Int_t &mtrack, Int_t &ipart, Float_t *pmom,
- Float_t &e, Float_t *vpos, Float_t *polar, Float_t &tof);
void PurifyKine();
void FinishEvent();
void FlagTrack(Int_t track);
// set methods
void SetNtrack(Int_t ntrack);
- void SetCurrentTrack(Int_t track);
+ virtual void SetCurrentTrack(Int_t track);
void SetHighWaterMark(Int_t hgwmk);
// get methods
- Int_t GetNtrack() const;
+ virtual Int_t GetNtrack() const;
Int_t GetNprimary() const;
- Int_t CurrentTrack() const;
+ virtual Int_t CurrentTrack() const;
TObjArray* Particles() const;
TParticle* Particle(Int_t id);
Int_t GetPrimary(Int_t id);
Int_t fCurrentPrimary; //! Last primary track returned from the stack
Int_t fHgwmk; //! Last track purified
Int_t fLoadPoint; //! Next free position in the particle buffer
- TStopwatch fTimer; //! Timer object
- ClassDef(AliStack,2) //Particles stack
+
+ ClassDef(AliStack,3) //Particles stack
};
// inline