////////////////////////////////////////////////
#include <AliMC.h>
-
+
//______________________________________________________________
//
// Geant3 prototypes for commons
* *
************************************************************************/
+class AliDecayer;
class TGeant3 : public AliMC {
public:
void TrackPosition(TLorentzVector &xyz) const;
void TrackMomentum(TLorentzVector &xyz) const;
Int_t NofVolumes() const;
+ Int_t VolId2Mate(Int_t id) const;
Float_t TrackTime() const;
Float_t TrackCharge() const;
Float_t TrackMass() const;
Bool_t IsTrackAlive() const;
Int_t NSecondaries() const;
Int_t CurrentEvent() const;
- const char* ProdProcess() const;
+ AliMCProcess ProdProcess(Int_t isec) const;
+ Int_t StepProcesses(TArrayI &proc) const;
void GetSecondary(Int_t isec, Int_t& ipart, TLorentzVector &x,
TLorentzVector &p);
void StopTrack();
void SetCut(const char* cutName, Float_t cutValue);
void SetProcess(const char* flagName, Int_t flagValue);
// void GetParticle(const Int_t pdg, char *name, Float_t &mass) const;
+ // Set the external decayer
+ void SetExternalDecayer(AliDecayer* decayer) {fDecayer=decayer;}
+ // Get the external decayer
+ AliDecayer* Decayer() const {return fDecayer;}
+
virtual Int_t GetMedium() const;
virtual Float_t Edep() const;
virtual Float_t Etot() const;
- virtual void Rndm(Float_t* r, const Int_t n) const;
virtual void Material(Int_t& kmat, const char* name, Float_t a, Float_t z,
Float_t dens, Float_t radl, Float_t absl,
virtual void Gmate();
virtual void Gpart();
virtual void Gsckov(Int_t itmed, Int_t npckov, Float_t *ppckov,
- Float_t *absco, Float_t *effic, Float_t *rindex);
+ Float_t *absco, Float_t *effic, Float_t *rindex);
virtual void Gsdk(Int_t ipart, Float_t *bratio, Int_t *mode);
virtual void Gsmate(Int_t imat, const char *name, Float_t a, Float_t z,
Float_t dens, Float_t radl, Float_t absl);
Float_t stmin);
virtual void Gstpar(Int_t itmed, const char *param, Float_t parval);
- // functions from GKINE
+ virtual void SetCerenkov(Int_t itmed, Int_t npckov, Float_t *ppckov,
+ Float_t *absco, Float_t *effic, Float_t *rindex);
+ // functions from GKINE
virtual void Gfkine(Int_t itra, Float_t *vert, Float_t *pvert,
Int_t &ipart, Int_t &nvert);
virtual void Gfvert(Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg);
Int_t& natt, Float_t* par, Float_t* att);
virtual void Gckpar(Int_t ish, Int_t npar, Float_t *par);
virtual void Gckmat(Int_t itmed, char *natmed);
+ virtual Int_t Glvolu(Int_t nlev, Int_t *lnam,Int_t *lnum);
// functions from GDRAW
virtual void DefaultRange();
Int_t fNextVol; // Iterator for GeomIter
//--------------Declarations for ZEBRA---------------------
- Int_t *fZiq; // Good Old IQ of Zebra
- Int_t *fZlq; // Good Old LQ of Zebra
- Float_t *fZq; // Good Old Q of Zebra
-
- Quest_t *fQuest; // QUEST common structure
- Gcbank_t *fGcbank; // GCBANK common structure
- Gclink_t *fGclink; // GCLINK common structure
- Gccuts_t *fGccuts; // GCCUTS common structure
- Gcmulo_t *fGcmulo; // GCMULO common structure
- Gcmate_t *fGcmate; // GCMATE common structure
- Gctpol_t *fGctpol; // GCTPOL common structure
- Gcnum_t *fGcnum; // GCNUM common structure
- Gcsets_t *fGcsets; // GCSETS common structure
- Gcopti_t *fGcopti; // GCOPTI common structure
- Gctlit_t *fGctlit; // GCTLIT common structure
- Gcvdma_t *fGcvdma; // GCVDMA common structure
- Gcvolu_t *fGcvolu; // GCVOLU common structure
- Gckine_t *fGckine; // GCKINE common structure
- Gcflag_t *fGcflag; // GCFLAG common structure
- Gctmed_t *fGctmed; // GCTMED common structure
- Gcphys_t *fGcphys; // GCPHYS common structure
- Gcphlt_t *fGcphlt; // GCPHLT common structure
- Gcking_t *fGcking; // GCKING common structure
- Gckin2_t *fGckin2; // GCKIN2 common structure
- Gckin3_t *fGckin3; // GCKIN3 common structure
- Gctrak_t *fGctrak; // GCTRAK common structure
-
+ Int_t *fZiq; //! Good Old IQ of Zebra
+ Int_t *fZlq; //! Good Old LQ of Zebra
+ Float_t *fZq; //! Good Old Q of Zebra
+
+ Quest_t *fQuest; //! QUEST common structure
+ Gcbank_t *fGcbank; //! GCBANK common structure
+ Gclink_t *fGclink; //! GCLINK common structure
+ Gccuts_t *fGccuts; //! GCCUTS common structure
+ Gcmulo_t *fGcmulo; //! GCMULO common structure
+ Gcmate_t *fGcmate; //! GCMATE common structure
+ Gctpol_t *fGctpol; //! GCTPOL common structure
+ Gcnum_t *fGcnum; //! GCNUM common structure
+ Gcsets_t *fGcsets; //! GCSETS common structure
+ Gcopti_t *fGcopti; //! GCOPTI common structure
+ Gctlit_t *fGctlit; //! GCTLIT common structure
+ Gcvdma_t *fGcvdma; //! GCVDMA common structure
+ Gcvolu_t *fGcvolu; //! GCVOLU common structure
+ Gckine_t *fGckine; //! GCKINE common structure
+ Gcflag_t *fGcflag; //! GCFLAG common structure
+ Gctmed_t *fGctmed; //! GCTMED common structure
+ Gcphys_t *fGcphys; //! GCPHYS common structure
+ Gcphlt_t *fGcphlt; //! GCPHLT common structure
+ Gcking_t *fGcking; //! GCKING common structure
+ Gckin2_t *fGckin2; //! GCKIN2 common structure
+ Gckin3_t *fGckin3; //! GCKIN3 common structure
+ Gctrak_t *fGctrak; //! GCTRAK common structure
// commons for GEANE
- Ertrio_t *fErtrio; // ERTRIO common structure
- Eropts_t *fEropts; // EROPTS common structure
- Eroptc_t *fEroptc; // EROPTC common structure
- Erwork_t *fErwork; // ERWORK common structure
+ Ertrio_t *fErtrio; //! ERTRIO common structure
+ Eropts_t *fEropts; //! EROPTS common structure
+ Eroptc_t *fEroptc; //! EROPTC common structure
+ Erwork_t *fErwork; //! ERWORK common structure
//Put here all volume names
Int_t fPDGCode[kMaxParticles]; // Translation table of PDG codes
+ AliDecayer* fDecayer; // Pointer to decayer
+
+ AliMCProcess G3toVMC(Int_t iproc) const;
+
private:
TGeant3(const TGeant3 &) {}
TGeant3 & operator=(const TGeant3&) {return *this;}