library: libVMC #include "TVirtualMC.h"

# TVirtualMC

class description - source file - inheritance tree (.pdf)

## class TVirtualMC : public TNamed

| Inheritance Chart:
`TObject`
| <- | `TNamed`
| <- | `TVirtualMC` |

This is an abstract class, constructors will not be documented.
Look at the header to check for available constructors.

        private:

          TVirtualMC& operator=(const TVirtualMC&)

        public:

                             virtual ~TVirtualMC()
                        virtual void BuildPhysics()
                      static TClass* Class()
                       virtual Int_t CurrentEvent() const
                       virtual Int_t CurrentMaterial(Float_t& a, Float_t& z, Float_t& dens, Float_t& radl, Float_t& absl) const
                       virtual Int_t CurrentVolID(Int_t& copyNo) const
                 virtual const char* CurrentVolName() const
                       virtual Int_t CurrentVolOffID(Int_t off, Int_t& copyNo) const
                 virtual const char* CurrentVolOffName(Int_t off) const
                 virtual const char* CurrentVolPath() const
                        virtual void DefaultRange()
                      virtual Bool_t DefineIon(const char* name, Int_t Z, Int_t A, Int_t Q, Double_t excEnergy, Double_t mass = 0.)
                        virtual void DefineOpSurface(const char* name, EMCOpSurfaceModel model, EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha)
                      virtual Bool_t DefineParticle(Int_t pdg, const char* name, TMCParticleType pType, Double_t mass, Double_t charge, Double_t lifetime)
                        virtual void DrawOneSpec(const char* name)
                    virtual Double_t Edep() const
                    virtual Double_t Etot() const
                        virtual void ForceDecayTime(Float_t)
                        virtual void Gckmat(Int_t imed, char* name)
                        virtual void Gdhead(Int_t, const char*, Double_t = 0)
                        virtual void Gdman(Double_t, Double_t, const char*)
                        virtual void Gdopt(const char*, const char*)
                        virtual void Gdraw(const char*, Double_t theta = 30, Double_t phi = 30, Double_t psi = 0, Double_t u0 = 10, Double_t v0 = 10, Double_t ul = 0.01, Double_t vl = 0.01)
                        virtual void Gdtom(Float_t* xd, Float_t* xm, Int_t iflag)
                        virtual void Gdtom(Double_t* xd, Double_t* xm, Int_t iflag)
          virtual TVirtualMCDecayer* GetDecayer() const
                       virtual Int_t GetMaxNStep() const
                  static TVirtualMC* GetMC()
                       virtual Int_t GetMedium() const
                    virtual TRandom* GetRandom() const
                        virtual void GetSecondary(Int_t isec, Int_t& particleId, TLorentzVector& position, TLorentzVector& momentum)
            virtual TVirtualMCStack* GetStack() const
                        virtual void Gfmate(Int_t imat, char* name, Float_t& a, Float_t& z, Float_t& dens, Float_t& radl, Float_t& absl, Float_t* ubuf, Int_t& nbuf)
                        virtual void Gfmate(Int_t imat, char* name, Double_t& a, Double_t& z, Double_t& dens, Double_t& radl, Double_t& absl, Double_t* ubuf, Int_t& nbuf)
                        virtual void Gmtod(Float_t* xm, Float_t* xd, Int_t iflag)
                        virtual void Gmtod(Double_t* xm, Double_t* xd, Int_t iflag)
                        virtual void Gsatt(const char* name, const char* att, Int_t val)
                        virtual void Gsbool(const char* onlyVolName, const char* manyVolName)
                        virtual void Gsdvn(const char* name, const char* mother, Int_t ndiv, Int_t iaxis)
                        virtual void Gsdvn2(const char* name, const char* mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)
                        virtual void Gsdvt(const char* name, const char* mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)
                        virtual void Gsdvt2(const char* name, const char* mother, Double_t step, Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx)
                        virtual void Gsord(const char* name, Int_t iax)
                        virtual void Gspos(const char* name, Int_t nr, const char* mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char* konly = "ONLY")
                        virtual void Gsposp(const char* name, Int_t nr, const char* mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char* konly, Float_t* upar, Int_t np)
                        virtual void Gsposp(const char* name, Int_t nr, const char* mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char* konly, Double_t* upar, Int_t np)
                        virtual void Gstpar(Int_t itmed, const char* param, Double_t parval)
                       virtual Int_t Gsvolu(const char* name, const char* shape, Int_t nmed, Float_t* upar, Int_t np)
                       virtual Int_t Gsvolu(const char* name, const char* shape, Int_t nmed, Double_t* upar, Int_t np)
                       virtual Int_t IdFromPDG(Int_t id) const
                        virtual void Init()
                        virtual void InitLego()
                     virtual TClass* IsA() const
                      virtual Bool_t IsNewTrack() const
                      virtual Bool_t IsRootGeometrySupported() const
                      virtual Bool_t IsTrackAlive() const
                      virtual Bool_t IsTrackDisappeared() const
                      virtual Bool_t IsTrackEntering() const
                      virtual Bool_t IsTrackExiting() const
                      virtual Bool_t IsTrackInside() const
                      virtual Bool_t IsTrackOut() const
                      virtual Bool_t IsTrackStop() const
                        virtual void Material(Int_t& kmat, const char* name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t* buf, Int_t nwbuf)
                        virtual void Material(Int_t& kmat, const char* name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Double_t* buf, Int_t nwbuf)
                        virtual void Matrix(Int_t& krot, Double_t thetaX, Double_t phiX, Double_t thetaY, Double_t phiY, Double_t thetaZ, Double_t phiZ)
                    virtual Double_t MaxStep() const
                        virtual void Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin, Float_t* ubuf, Int_t nbuf)
                        virtual void Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin, Double_t* ubuf, Int_t nbuf)
                        virtual void Mixture(Int_t& kmat, const char* name, Float_t* a, Float_t* z, Double_t dens, Int_t nlmat, Float_t* wmat)
                        virtual void Mixture(Int_t& kmat, const char* name, Double_t* a, Double_t* z, Double_t dens, Int_t nlmat, Double_t* wmat)
                       virtual Int_t NofVolDaughters(const char* volName) const
                       virtual Int_t NofVolumes() const
                       virtual Int_t NSecondaries() const
                    virtual Double_t ParticleCharge(Int_t pdg) const
                    virtual Double_t ParticleLifeTime(Int_t pdg) const
                    virtual Double_t ParticleMass(Int_t pdg) const
             virtual TMCParticleType ParticleMCType(Int_t pdg) const
                     virtual TString ParticleName(Int_t pdg) const
                       virtual Int_t PDGFromId(Int_t pdg) const
                        virtual void ProcessEvent()
                      virtual Bool_t ProcessRun(Int_t nevent)
                  virtual TMCProcess ProdProcess(Int_t isec) const
                      virtual Bool_t SecondariesAreOrdered() const
                        virtual void SetBorderSurface(const char* name, const char* vol1Name, int vol1CopyNo, const char* vol2Name, int vol2CopyNo, const char* opSurfaceName)
                        virtual void SetCerenkov(Int_t itmed, Int_t npckov, Float_t* ppckov, Float_t* absco, Float_t* effic, Float_t* rindex)
                        virtual void SetCerenkov(Int_t itmed, Int_t npckov, Double_t* ppckov, Double_t* absco, Double_t* effic, Double_t* rindex)
                        virtual void SetClipBox(const char*, Double_t = -9999, Double_t = 0, Double_t = -9999, Double_t = 0, Double_t = -9999, Double_t = 0)
                      virtual Bool_t SetCut(const char* cutName, Double_t cutValue)
                        virtual void SetExternalDecayer(TVirtualMCDecayer* decayer)
                        virtual void SetMaterialProperty(Int_t itmed, const char* propertyName, Int_t np, Double_t* pp, Double_t* values)
                        virtual void SetMaterialProperty(Int_t itmed, const char* propertyName, Double_t value)
                        virtual void SetMaterialProperty(const char* surfaceName, const char* propertyName, Int_t np, Double_t* pp, Double_t* values)
                        virtual void SetMaxNStep(Int_t)
                        virtual void SetMaxStep(Double_t)
                      virtual Bool_t SetProcess(const char* flagName, Int_t flagValue)
                        virtual void SetRandom(TRandom* random)
                        virtual void SetRootGeometry()
                        virtual void SetSkinSurface(const char* name, const char* volName, const char* opSurfaceName)
                        virtual void SetStack(TVirtualMCStack* stack)
                        virtual void SetUserDecay(Int_t)
                        virtual void ShowMembers(TMemberInspector& insp, char* parent)
                       virtual Int_t StepProcesses(TArrayI& proc) const
                        virtual void StopEvent()
                        virtual void StopRun()
                        virtual void StopTrack()
                        virtual void Streamer(TBuffer& b)
                                void StreamerNVirtual(TBuffer& b)
                    virtual Double_t TrackCharge() const
                    virtual Double_t TrackLength() const
                    virtual Double_t TrackMass() const
                        virtual void TrackMomentum(TLorentzVector& momentum) const
                        virtual void TrackMomentum(Double_t& px, Double_t& py, Double_t& pz, Double_t& etot) const
                       virtual Int_t TrackPid() const
                        virtual void TrackPosition(TLorentzVector& position) const
                        virtual void TrackPosition(Double_t& x, Double_t& y, Double_t& z) const
                    virtual Double_t TrackStep() const
                    virtual Double_t TrackTime() const
                       virtual Int_t VolDaughterCopyNo(const char* volName, Int_t i) const
                 virtual const char* VolDaughterName(const char* volName, Int_t i) const
                       virtual Int_t VolId(const Text_t* volName) const
                       virtual Int_t VolId2Mate(Int_t id) const
                 virtual const char* VolName(Int_t id) const
                        virtual void WriteEuclid(const char*, const char*, Int_t, Int_t)
                    virtual Double_t Xsec(char*, Double_t, Int_t, Int_t)

### Data Members

        private:

          static TVirtualMC* fgMC      Monte Carlo singleton instance
            TVirtualMCStack* fStack    ! Particles stack
          TVirtualMCDecayer* fDecayer  ! External decayer
                    TRandom* fRandom   ! Random number generator

        protected:

          TVirtualMCApplication* fApplication  ! User MC application

## Class Description

       Virtual MC provides a virtual interface to Monte Carlo.
       It enables the user to build a virtual Monte Carlo application
       independent of any actual underlying Monte Carlo implementation itself.

       A user will have to implement a class derived from the abstract
       Monte Carlo application class, and provide functions like
       ConstructGeometry(), BeginEvent(), FinishEvent(), ... .
       The concrete Monte Carlo (Geant3, Geant4) is selected at run time -
       when processing a ROOT macro where the concrete Monte Carlo is instantiated.
    ______________________________________________________________________________

~TVirtualMC()

     Destructor

void SetStack(TVirtualMCStack* stack)

     Set particles stack.

void SetExternalDecayer(TVirtualMCDecayer* decayer)

     Set external decayer.

void SetRandom(TRandom* random)

     Set random number generator.

### Inline Functions

                   TVirtualMC* GetMC()
                        Bool_t IsRootGeometrySupported() const
                          void Gfmate(Int_t imat, char* name, Float_t& a, Float_t& z, Float_t& dens, Float_t& radl, Float_t& absl, Float_t* ubuf, Int_t& nbuf)
                          void Gfmate(Int_t imat, char* name, Double_t& a, Double_t& z, Double_t& dens, Double_t& radl, Double_t& absl, Double_t* ubuf, Int_t& nbuf)
                          void Gckmat(Int_t imed, char* name)
                          void Material(Int_t& kmat, const char* name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t* buf, Int_t nwbuf)
                          void Material(Int_t& kmat, const char* name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Double_t* buf, Int_t nwbuf)
                          void Mixture(Int_t& kmat, const char* name, Float_t* a, Float_t* z, Double_t dens, Int_t nlmat, Float_t* wmat)
                          void Mixture(Int_t& kmat, const char* name, Double_t* a, Double_t* z, Double_t dens, Int_t nlmat, Double_t* wmat)
                          void Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin, Float_t* ubuf, Int_t nbuf)
                          void Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin, Double_t* ubuf, Int_t nbuf)
                          void Matrix(Int_t& krot, Double_t thetaX, Double_t phiX, Double_t thetaY, Double_t phiY, Double_t thetaZ, Double_t phiZ)
                          void Gstpar(Int_t itmed, const char* param, Double_t parval)
                         Int_t Gsvolu(const char* name, const char* shape, Int_t nmed, Float_t* upar, Int_t np)
                         Int_t Gsvolu(const char* name, const char* shape, Int_t nmed, Double_t* upar, Int_t np)
                          void Gsdvn(const char* name, const char* mother, Int_t ndiv, Int_t iaxis)
                          void Gsdvn2(const char* name, const char* mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)
                          void Gsdvt(const char* name, const char* mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)
                          void Gsdvt2(const char* name, const char* mother, Double_t step, Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx)
                          void Gsord(const char* name, Int_t iax)
                          void Gspos(const char* name, Int_t nr, const char* mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char* konly = "ONLY")
                          void Gsposp(const char* name, Int_t nr, const char* mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char* konly, Float_t* upar, Int_t np)
                          void Gsposp(const char* name, Int_t nr, const char* mother, Double_t x, Double_t y, Double_t z, Int_t irot, const char* konly, Double_t* upar, Int_t np)
                          void Gsbool(const char* onlyVolName, const char* manyVolName)
                          void SetCerenkov(Int_t itmed, Int_t npckov, Float_t* ppckov, Float_t* absco, Float_t* effic, Float_t* rindex)
                          void SetCerenkov(Int_t itmed, Int_t npckov, Double_t* ppckov, Double_t* absco, Double_t* effic, Double_t* rindex)
                          void DefineOpSurface(const char* name, EMCOpSurfaceModel model, EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha)
                          void SetBorderSurface(const char* name, const char* vol1Name, int vol1CopyNo, const char* vol2Name, int vol2CopyNo, const char* opSurfaceName)
                          void SetSkinSurface(const char* name, const char* volName, const char* opSurfaceName)
                          void SetMaterialProperty(Int_t itmed, const char* propertyName, Int_t np, Double_t* pp, Double_t* values)
                          void SetMaterialProperty(Int_t itmed, const char* propertyName, Double_t value)
                          void SetMaterialProperty(const char* surfaceName, const char* propertyName, Int_t np, Double_t* pp, Double_t* values)
                          void DrawOneSpec(const char* name)
                          void Gsatt(const char* name, const char* att, Int_t val)
                          void Gdraw(const char*, Double_t theta = 30, Double_t phi = 30, Double_t psi = 0, Double_t u0 = 10, Double_t v0 = 10, Double_t ul = 0.01, Double_t vl = 0.01)
                          void WriteEuclid(const char*, const char*, Int_t, Int_t)
                          void SetRootGeometry()
                         Int_t VolId(const Text_t* volName) const
                   const char* VolName(Int_t id) const
                         Int_t NofVolumes() const
                         Int_t VolId2Mate(Int_t id) const
                         Int_t NofVolDaughters(const char* volName) const
                   const char* VolDaughterName(const char* volName, Int_t i) const
                         Int_t VolDaughterCopyNo(const char* volName, Int_t i) const
                        Bool_t SetCut(const char* cutName, Double_t cutValue)
                        Bool_t SetProcess(const char* flagName, Int_t flagValue)
                        Bool_t DefineParticle(Int_t pdg, const char* name, TMCParticleType pType, Double_t mass, Double_t charge, Double_t lifetime)
                        Bool_t DefineIon(const char* name, Int_t Z, Int_t A, Int_t Q, Double_t excEnergy, Double_t mass = 0.)
                      Double_t Xsec(char*, Double_t, Int_t, Int_t)
                         Int_t IdFromPDG(Int_t id) const
                         Int_t PDGFromId(Int_t pdg) const
                       TString ParticleName(Int_t pdg) const
                      Double_t ParticleMass(Int_t pdg) const
                      Double_t ParticleCharge(Int_t pdg) const
                      Double_t ParticleLifeTime(Int_t pdg) const
               TMCParticleType ParticleMCType(Int_t pdg) const
                          void StopTrack()
                          void StopEvent()
                          void StopRun()
                          void SetMaxStep(Double_t)
                          void SetMaxNStep(Int_t)
                          void SetUserDecay(Int_t)
                          void ForceDecayTime(Float_t)
                         Int_t CurrentVolID(Int_t& copyNo) const
                         Int_t CurrentVolOffID(Int_t off, Int_t& copyNo) const
                   const char* CurrentVolName() const
                   const char* CurrentVolOffName(Int_t off) const
                   const char* CurrentVolPath() const
                         Int_t CurrentMaterial(Float_t& a, Float_t& z, Float_t& dens, Float_t& radl, Float_t& absl) const
                         Int_t CurrentEvent() const
                          void Gmtod(Float_t* xm, Float_t* xd, Int_t iflag)
                          void Gmtod(Double_t* xm, Double_t* xd, Int_t iflag)
                          void Gdtom(Float_t* xd, Float_t* xm, Int_t iflag)
                          void Gdtom(Double_t* xd, Double_t* xm, Int_t iflag)
                      Double_t MaxStep() const
                         Int_t GetMaxNStep() const
                         Int_t GetMedium() const
                          void TrackPosition(TLorentzVector& position) const
                          void TrackPosition(Double_t& x, Double_t& y, Double_t& z) const
                          void TrackMomentum(TLorentzVector& momentum) const
                          void TrackMomentum(Double_t& px, Double_t& py, Double_t& pz, Double_t& etot) const
                      Double_t TrackStep() const
                      Double_t TrackLength() const
                      Double_t TrackTime() const
                      Double_t Edep() const
                         Int_t TrackPid() const
                      Double_t TrackCharge() const
                      Double_t TrackMass() const
                      Double_t Etot() const
                        Bool_t IsNewTrack() const
                        Bool_t IsTrackInside() const
                        Bool_t IsTrackEntering() const
                        Bool_t IsTrackExiting() const
                        Bool_t IsTrackOut() const
                        Bool_t IsTrackDisappeared() const
                        Bool_t IsTrackStop() const
                        Bool_t IsTrackAlive() const
                         Int_t NSecondaries() const
                          void GetSecondary(Int_t isec, Int_t& particleId, TLorentzVector& position, TLorentzVector& momentum)
                    TMCProcess ProdProcess(Int_t isec) const
                         Int_t StepProcesses(TArrayI& proc) const
                        Bool_t SecondariesAreOrdered() const
                          void Gdopt(const char*, const char*)
                          void SetClipBox(const char*, Double_t = -9999, Double_t = 0, Double_t = -9999, Double_t = 0, Double_t = -9999, Double_t = 0)
                          void DefaultRange()
                          void Gdhead(Int_t, const char*, Double_t = 0)
                          void Gdman(Double_t, Double_t, const char*)
                          void Init()
                          void BuildPhysics()
                          void ProcessEvent()
                        Bool_t ProcessRun(Int_t nevent)
                          void InitLego()
              TVirtualMCStack* GetStack() const
            TVirtualMCDecayer* GetDecayer() const
                      TRandom* GetRandom() const
                   TVirtualMC& operator=(const TVirtualMC&)
                       TClass* Class()
                       TClass* IsA() const
                          void ShowMembers(TMemberInspector& insp, char* parent)
                          void Streamer(TBuffer& b)
                          void StreamerNVirtual(TBuffer& b)

Last update: root/mc:$Name: $:$Id: TVirtualMC.cxx,v 1.5 2005/02/08 11:20:15 brun Exp $
Copyright (c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *