13 #ifndef ROOT_TVirtualMC 14 #define ROOT_TVirtualMC 194 virtual void Gsdvn(
const char *name,
const char *mother,
Int_t ndiv,
201 virtual void Gsdvn2(
const char *name,
const char *mother,
Int_t ndiv,
212 virtual void Gsdvt(
const char *name,
const char *mother,
Double_t step,
223 virtual void Gsdvt2(
const char *name,
const char *mother,
Double_t step,
229 virtual void Gsord(
const char *name,
Int_t iax) = 0;
241 virtual void Gspos(
const char *name,
Int_t nr,
const char *mother,
243 const char *konly=
"ONLY") = 0;
247 virtual void Gsposp(
const char *name,
Int_t nr,
const char *mother,
252 virtual void Gsposp(
const char *name,
Int_t nr,
const char *mother,
260 virtual void Gsbool(
const char* onlyVolName,
const char* manyVolName) = 0;
308 const char* vol1Name,
int vol1CopyNo,
309 const char* vol2Name,
int vol2CopyNo,
310 const char* opSurfaceName) = 0;
319 const char* opSurfaceName) = 0;
329 Int_t itmed,
const char* propertyName,
338 Int_t itmed,
const char* propertyName,
349 const char* surfaceName,
const char* propertyName,
397 virtual void WriteEuclid(
const char* filnam,
const char* topvol,
415 virtual Int_t VolId(
const char* volName)
const = 0;
799 virtual void Init() = 0;
867 #if !defined(__CINT__) 881 #define gMC (TVirtualMC::GetMC()) 883 #endif //ROOT_TVirtualMC virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis)=0
Create a new volume by dividing an existing one.
virtual void SetUserParameters(Bool_t isUserParameters)=0
Activate the parameters defined in tracking media (DEEMAX, STMIN, STEMAX), which are, be default, ignored.
virtual Bool_t SetCut(const char *cutName, Double_t cutValue)=0
Set transport cuts for particles.
virtual TMCParticleType ParticleMCType(Int_t pdg) const =0
Return VMC type of the particle specified by pdg.
virtual Double_t TrackMass() const =0
Return the mass of the track currently transported.
virtual void Init()=0
Initialize MC.
virtual void Gsord(const char *name, Int_t iax)=0
Flag volume name whose contents will have to be ordered along axis iax, by setting the search flag to...
virtual Double_t Etot() const =0
Return the total energy of the current track.
static TMCThreadLocal TVirtualMC * fgMC
Monte Carlo singleton instance.
virtual Bool_t IsRootGeometrySupported() const =0
Info about supporting geometry defined via Root.
virtual Int_t MediumId(const char *mediumName) const =0
Return the unique numeric identifier for medium name mediumName.
virtual const char * CurrentVolName() const =0
Return the current volume name.
virtual Bool_t SecondariesAreOrdered() const =0
Return the information about the transport order needed by the stack.
TVirtualMCStack * fStack
Particles stack.
virtual Double_t TrackLength() const =0
Return the length of the current track from its origin (in cm)
virtual Double_t ParticleCharge(Int_t pdg) const =0
Return charge (in e units) of the particle specified by pdg.
virtual Int_t CurrentVolID(Int_t ©No) const =0
Return the current volume ID and copy number.
virtual Int_t VolDaughterCopyNo(const char *volName, Int_t i) const =0
Return the copyNo of i-th daughter of the volume specified by volName.
TMCParticleType
VMC particle type codes.
EMCOpSurfaceModel
Optical surface models.
TVirtualMC & operator=(const TVirtualMC &)
virtual TString ParticleName(Int_t pdg) const =0
Return name of the particle specified by pdg.
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)=0
Define a material.
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")=0
Position a volume into an existing one.
TRandom * fRandom
Random number generator.
virtual void TrackPosition(TLorentzVector &position) const =0
Return the current position in the master reference frame of the track being transported.
virtual void SetMaxNStep(Int_t)=0
Set the maximum number of steps till the particle is in the current medium.
virtual void StopTrack()=0
Stop the transport of the current particle and skip to the next.
TVirtualMCDecayer * fDecayer
External decayer.
virtual Int_t VolId(const char *volName) const =0
Return the unique numeric identifier for volume name volName.
virtual Double_t ParticleMass(Int_t pdg) const =0
Return mass of the particle specified by pdg.
virtual Double_t TrackStep() const =0
Return the length in centimeters of the current step (in cm)
virtual Int_t VolId2Mate(Int_t id) const =0
Return material number for a given volume id.
Matrix class used for computing global transformations Should NOT be used for node definition...
virtual Bool_t GetMaterial(Int_t imat, TString &name, Double_t &a, Double_t &z, Double_t &density, Double_t &radl, Double_t &inter, TArrayD &par)=0
Return the material parameters for the material specified by the material Id.
TRandom * GetRandom() const
Return the random number generator.
virtual void SetRootGeometry()=0
Set geometry from Root (built via TGeo)
virtual void InitLego()=0
Set switches for lego transport.
virtual Bool_t DefineIon(const char *name, Int_t Z, Int_t A, Int_t Q, Double_t excEnergy, Double_t mass=0.)=0
Set a user defined ion.
Abstract base class for particle decays.
virtual void StopRun()=0
Stop simulation of the current event and set the abort run flag to true.
virtual void ForceDecayTime(Float_t)=0
Force the decay time of the current particle.
virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag)=0
Computes coordinates xm in mother reference system from known coordinates xd in daughter reference sy...
Array of integers (32 bits per element).
EMCOpSurfaceFinish
Optical surface finish types.
virtual Int_t TrackPid() const =0
Return the PDG of the particle transported.
virtual void TrackMomentum(TLorentzVector &momentum) const =0
Return the direction and the momentum (GeV/c) of the track currently being transported.
virtual Bool_t GetShape(const TString &volumePath, TString &shapeType, TArrayD &par)=0
Return the name of the shape (shapeType) and its parameters par for the volume specified by the path ...
virtual Int_t CurrentMedium() const =0
virtual Double_t TrackTime() const =0
Return the current time of flight of the track being transported.
virtual ~TVirtualMC()
Destructor.
virtual Int_t NSecondaries() const =0
Return the number of secondary particles generated in the current step.
#define ClassDef(name, id)
TVirtualMC()
Default constructor.
This is the base class for the ROOT Random number generators.
The TNamed class is the base class for all named ROOT classes.
virtual Bool_t IsTrackStop() const =0
Return true if the track energy has fallen below the threshold.
virtual Bool_t GetTransformation(const TString &volumePath, TGeoHMatrix &matrix)=0
Return the transformation matrix between the volume specified by the path volumePath and the top or m...
virtual void Gsbool(const char *onlyVolName, const char *manyVolName)=0
Helper function for resolving MANY.
virtual Double_t MaxStep() const =0
Return the maximum step length in the current medium.
virtual void DefineOpSurface(const char *name, EMCOpSurfaceModel model, EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha)=0
Define the optical surface.
virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag)=0
Computes coordinates xd in daughter reference system from known coordinates xm in mother reference sy...
virtual void WriteEuclid(const char *filnam, const char *topvol, Int_t number, Int_t nlevel)=0
Write out the geometry of the detector in EUCLID file format.
virtual void SetCollectTracks(Bool_t collectTracks)=0
(In)Activate collecting TGeo tracks
virtual void SetBorderSurface(const char *name, const char *vol1Name, int vol1CopyNo, const char *vol2Name, int vol2CopyNo, const char *opSurfaceName)=0
Define the optical surface border.
TVirtualMagField * GetMagField() const
Return the magnetic field.
virtual Int_t GetMaxNStep() const =0
Return the maximum number of steps allowed in the current medium.
virtual Double_t ParticleLifeTime(Int_t pdg) const =0
Return life time of the particle specified by pdg.
virtual Bool_t IsTrackInside() const =0
Return true if the track is not at the boundary of the current volume.
virtual Bool_t CurrentBoundaryNormal(Double_t &x, Double_t &y, Double_t &z) const =0
If track is on a geometry boundary, fill the normal vector of the crossing volume surface and return ...
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)=0
Place a copy of generic volume name with user number nr inside mother, with its parameters upar(1...
TVirtualMCApplication * fApplication
User MC application.
TLorentzVector is a general four-vector class, which can be used either for the description of positi...
virtual Int_t StepProcesses(TArrayI &proc) const =0
Return the array of the VMC code of the processes active in the current step.
TVirtualMagField * fMagField
Magnetic field.
virtual Double_t TrackCharge() const =0
Return the charge of the track currently transported.
Interface to a user defined particles stack.
virtual void GetSecondary(Int_t isec, Int_t &particleId, TLorentzVector &position, TLorentzVector &momentum)=0
Return the parameters of the secondary track number isec produced in the current step.
virtual void SetUserDecay(Int_t pdg)=0
Force the decays of particles to be done with Pythia and not with the Geant routines.
virtual void SetCerenkov(Int_t itmed, Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex)=0
Define the tables for UV photon tracking in medium itmed.
virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t np)=0
Create a new volume.
virtual const char * CurrentVolOffName(Int_t off) const =0
Return the current volume off upward in the geometrical tree name and copy number' if name=0 no name ...
virtual Bool_t SetProcess(const char *flagName, Int_t flagValue)=0
Set process control.
virtual Int_t NofVolumes() const =0
Return total number of volumes in the geometry.
virtual void StopEvent()=0
Stop simulation of the current event and skip to the next.
virtual const char * VolDaughterName(const char *volName, Int_t i) const =0
Return the name of i-th daughter of the volume specified by volName.
Interface to a user Monte Carlo application.
virtual Bool_t ProcessRun(Int_t nevent)=0
Process one run and return true if run has finished successfully, return false in other cases (run ab...
virtual const char * CurrentVolPath()=0
Return the path in geometry tree for the current volume.
virtual void Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)=0
Define a mixture or a compound with a number kmat composed by the basic nlmat materials defined by ar...
virtual Int_t NofVolDaughters(const char *volName) const =0
Return number of daughters of the volume specified by volName.
virtual Bool_t IsTrackEntering() const =0
Return true if this is the first step of the track in the current volume.
virtual void SetSkinSurface(const char *name, const char *volName, const char *opSurfaceName)=0
Define the optical skin surface.
virtual Bool_t IsTrackDisappeared() const =0
Return true if the current particle has disappeared either because it decayed or because it underwent...
virtual void SetMaterialProperty(Int_t itmed, const char *propertyName, Int_t np, Double_t *pp, Double_t *values)=0
Define material property via a table of values.
virtual Bool_t IsMT() const
Return the info if multi-threading is supported/activated.
virtual Bool_t IsTrackExiting() const =0
Return true if this is the last step of the track in the current volume.
virtual void SetMagField(TVirtualMagField *field)
Set the magnetic field.
virtual Bool_t IsNewTrack() const =0
Return true when the track performs the first step.
virtual void ProcessEvent()=0
Process one event Deprecated.
Abstract Monte Carlo interface.
virtual Int_t CurrentEvent() const =0
Return the number of the current event.
virtual void SetRandom(TRandom *random)
Set the random number generator.
virtual Double_t Xsec(char *, Double_t, Int_t, Int_t)=0
Calculate X-sections (Geant3 only) Deprecated.
virtual Bool_t IsTrackOut() const =0
Return true if the track is out of the setup.
virtual Bool_t IsTrackAlive() const =0
Return true if the current particle is alive and will continue to be transported. ...
Abstract class for magnetic field.
virtual void BuildPhysics()=0
Initialize MC physics.
Array of doubles (64 bits per element).
TMCProcess
VMC physics process codes.
virtual Bool_t DefineParticle(Int_t pdg, const char *name, TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime)=0
Set a user defined particle Function is ignored if particle with specified pdg already exists and err...
you should not use this method at all Int_t Int_t z
virtual Int_t IdFromPDG(Int_t pdg) const =0
Return MC specific code from a PDG and pseudo ENDF code (pdg)
virtual void Gsdvt(const char *name, const char *mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)=0
Create a new volume by dividing an existing one Divide mother into divisions called name along axis i...
virtual void SetExternalDecayer(TVirtualMCDecayer *decayer)
Set the external decayer.
virtual void Gstpar(Int_t itmed, const char *param, Double_t parval)=0
Change the value of cut or mechanism param to a new value parval for tracking medium itmed...
TVirtualMCStack * GetStack() const
Return the particle stack.
virtual Double_t Edep() const =0
Return the energy lost in the current step.
virtual TMCProcess ProdProcess(Int_t isec) const =0
Return the VMC code of the process that has produced the secondary particles in the current step...
virtual void SetStack(TVirtualMCStack *stack)
Set the particle stack.
TVirtualMCDecayer * GetDecayer() const
Return the external decayer.
virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)=0
Create a new volume by dividing an existing one.
virtual void SetMaxStep(Double_t)=0
Set the maximum step allowed till the particle is in the current medium.
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)=0
Define a medium.
virtual Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const =0
Return the parameters of the current material during transport.
virtual Bool_t SetDecayMode(Int_t pdg, Float_t bratio[6], Int_t mode[6][3])=0
Set a user phase space decay for a particle.
virtual Int_t PDGFromId(Int_t id) const =0
Return PDG code and pseudo ENDF code from MC specific code (id)
virtual void Gsdvt2(const char *name, const char *mother, Double_t step, Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx)=0
Create a new volume by dividing an existing one Divides mother into divisions called name along axis ...
virtual Int_t CurrentVolOffID(Int_t off, Int_t ©No) const =0
Return the current volume off upward in the geometrical tree ID and copy number.
virtual const char * VolName(Int_t id) const =0
Return the volume name for a given volume identifier id.
virtual void Matrix(Int_t &krot, Double_t thetaX, Double_t phiX, Double_t thetaY, Double_t phiY, Double_t thetaZ, Double_t phiZ)=0
Define a rotation matrix.
virtual Bool_t IsCollectTracks() const =0
Return the info if collecting tracks is activated.
virtual Bool_t GetMedium(const TString &volumeName, TString &name, Int_t &imed, 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, TArrayD &par)=0
Return the medium parameters for the volume specified by the volumeName.
static TVirtualMC * GetMC()
Static access method.
EMCOpSurfaceType
Optical surface types.