13#ifndef ROOT_TVirtualMC
14#define ROOT_TVirtualMC
235 const char *konly =
"ONLY") = 0;
250 virtual void Gsbool(
const char *onlyVolName,
const char *manyVolName) = 0;
295 int vol2CopyNo,
const char *opSurfaceName) = 0;
896#if !defined(__CINT__)
926 Warning(
"SetSensitiveDetector(...)",
"New function - not yet implemented.");
934 Warning(
"GetSensitiveDetector()",
"New function - not yet implemented.");
945 Warning(
"SetExclusiveSDScoring(...)",
"New function - not yet implemented.");
952 Warning(
"NIELEdep()",
"New function - not yet implemented.");
957#define gMC (TVirtualMC::GetMC())
#define ClassDef(name, id)
include TDocParser_001 C image html pict1_TDocParser_001 png width
EMCOpSurfaceModel
Optical surface models.
EMCOpSurfaceType
Optical surface types.
EMCOpSurfaceFinish
Optical surface finish types.
TMCParticleType
VMC particle type codes.
TMCProcess
VMC physics process codes.
Array of doubles (64 bits per element).
Array of integers (32 bits per element).
Matrix class used for computing global transformations Should NOT be used for node definition.
Concrete implementation of particles stack used by the TMCManager.
Singleton manager class for handling and steering a run with multiple TVirtualMC engines sharing even...
The TNamed class is the base class for all named ROOT classes.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
This is the base class for the ROOT Random number generators.
TVector3 is a general three vector class, which can be used for the description of different vectors ...
Interface to a user Monte Carlo application.
Abstract base class for particle decays.
Interface to a user defined sensitive detector.
Interface to a user defined particles stack.
Abstract Monte Carlo interface.
virtual Bool_t IsMT() const
Return the info if multi-threading is supported/activated.
virtual Int_t StepProcesses(TArrayI &proc) const =0
Return the array of the VMC code of the processes active in the current step.
TMCManagerStack * GetManagerStack() const
Return the particle stack managed by the TMCManager (if any)
virtual Bool_t IsCollectTracks() const =0
Return the info if collecting tracks is activated.
virtual Double_t ParticleMass(Int_t pdg) const =0
Return mass of the particle specified by pdg.
virtual void Mixture(Int_t &kmat, const char *name, Double_t *a, Double_t *z, Double_t dens, Int_t nlmat, Double_t *wmat)=0
The same as previous but in double precision.
virtual Int_t CurrentEvent() const =0
Return the number of the current event.
virtual Int_t IdFromPDG(Int_t pdg) const =0
Return MC specific code from a PDG and pseudo ENDF code (pdg)
TVirtualMC()
Default constructor.
virtual Bool_t IsNewTrack() const =0
Return true when the track performs the first step.
virtual TVirtualMCSensitiveDetector * GetSensitiveDetector(const TString &volName) const
Get a sensitive detector of a volume.
virtual Bool_t GetMaterial(const TString &volumeName, TString &name, Int_t &imat, Double_t &a, Double_t &z, Double_t &density, Double_t &radl, Double_t &inter, TArrayD &par)=0
Return the material parameters for the volume specified by the volumeName.
virtual void TrackPosition(Double_t &x, Double_t &y, Double_t &z) const =0
Only return spatial coordinates (as double)
virtual Bool_t IsTrackAlive() const =0
Return true if the current particle is alive and will continue to be transported.
virtual Double_t MaxStep() const =0
Return the maximum step length in the current medium.
virtual Double_t TrackTime() const =0
Return the current time of flight of the track being transported.
virtual void Gmtod(Double_t *xm, Double_t *xd, Int_t iflag)=0
The same as previous but in double precision.
virtual Bool_t IsTrackInside() const =0
Return true if the track is not at the boundary of the current volume.
virtual Double_t Edep() const =0
Return the energy lost in the current step.
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 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)=0
The same as previous but in double precision.
TVirtualMC(const TVirtualMC &mc)
virtual Int_t VolId2Mate(Int_t id) const =0
Return material number for a given volume id.
virtual void StopRun()=0
Stop simulation of the current event and set the abort run flag to true.
TRandom * fRandom
Random number generator.
virtual const char * VolName(Int_t id) const =0
Return the volume name for a given volume identifier id.
virtual Double_t TrackLength() const =0
Return the length of the current track from its origin (in cm)
virtual void Gsbool(const char *onlyVolName, const char *manyVolName)=0
Helper function for resolving MANY.
virtual void TrackPolarization(Double_t &polX, Double_t &polY, Double_t &polZ) const
Get the current polarization.
virtual Int_t StepNumber() const
Return the current step number.
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 void TerminateRun()
Additional cleanup after a run can be done here (optional)
virtual void Gdtom(Double_t *xd, Double_t *xm, Int_t iflag)=0
The same as previous but in double precision.
TVirtualMC & operator=(const TVirtualMC &)
TVirtualMCDecayer * GetDecayer() const
Return the external decayer.
virtual Int_t CurrentVolID(Int_t ©No) const =0
Return the current volume ID and copy number.
virtual TMCParticleType ParticleMCType(Int_t pdg) const =0
Return VMC type of the particle specified by pdg.
virtual void Init()=0
Initialize MC.
virtual void SetMaterialProperty(const char *surfaceName, const char *propertyName, Int_t np, Double_t *pp, Double_t *values)=0
Define optical surface property via a table of values.
virtual Double_t TrackMass() const =0
Return the mass of the track currently transported.
virtual void InterruptTrack()
That triggers stopping the transport of the current track without dispatching to common routines like...
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 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....
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 Bool_t IsTrackStop() const =0
Return true if the track energy has fallen below the threshold.
static TVirtualMC * GetMC()
Static access method.
virtual void ForceDecayTime(Float_t)=0
Force the decay time of the current particle.
virtual Int_t CurrentMedium() const =0
virtual void TrackPosition(Float_t &x, Float_t &y, Float_t &z) const =0
Only return spatial coordinates (as float)
TMCManagerStack * fManagerStack
Stack handled by the TMCManager.
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 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 void SetBorderSurface(const char *name, const char *vol1Name, int vol1CopyNo, const char *vol2Name, int vol2CopyNo, const char *opSurfaceName)=0
Define the optical surface border.
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 void SetUserParameters(Bool_t isUserParameters)=0
Activate the parameters defined in tracking media (DEEMAX, STMIN, STEMAX), which are,...
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)=0
The same as previous but in double precision.
virtual Int_t TrackPid() const =0
Return the PDG of the particle transported.
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 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.
virtual Double_t ParticleLifeTime(Int_t pdg) const =0
Return life time of the particle specified by pdg.
virtual void DefineOpSurface(const char *name, EMCOpSurfaceModel model, EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha)=0
Define the optical surface.
virtual void SetMaterialProperty(Int_t itmed, const char *propertyName, Double_t value)=0
Define material property via a value.
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.
virtual Bool_t IsTrackEntering() const =0
Return true if this is the first step of the track in the current volume.
virtual void ProcessEvent()
Process one event (backward-compatibility)
TRandom * GetRandom() const
Return the random number generator.
virtual Double_t ParticleCharge(Int_t pdg) const =0
Return charge (in e units) 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, Double_t *buf, Int_t nwbuf)=0
The same as previous but in double precision.
virtual void SetMaxStep(Double_t)=0
Set the maximum step allowed till the particle is in the current medium.
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.
virtual void SetRandom(TRandom *random)
Set the random number generator.
void SetId(UInt_t id)
Set the VMC id.
virtual Double_t Etot() const =0
Return the total energy of the current track.
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 Bool_t IsTrackDisappeared() const =0
Return true if the current particle has disappeared either because it decayed or because it underwent...
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 InitLego()=0
Set switches for lego transport.
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 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.
virtual TString ParticleName(Int_t pdg) const =0
Return name of the particle specified by pdg.
Int_t fId
Unique identification of this VMC.
virtual void SetSensitiveDetector(const TString &volName, TVirtualMCSensitiveDetector *sd)
Set a sensitive detector to a volume.
virtual Bool_t DefineParticle(Int_t pdg, const char *name, TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime, const TString &pType, Double_t width, Int_t iSpin, Int_t iParity, Int_t iConjugation, Int_t iIsospin, Int_t iIsospinZ, Int_t gParity, Int_t lepton, Int_t baryon, Bool_t stable, Bool_t shortlived=kFALSE, const TString &subType="", Int_t antiEncoding=0, Double_t magMoment=0.0, Double_t excitation=0.0)=0
Set a user defined particle Function is ignored if particle with specified pdg already exists and err...
virtual Double_t TrackCharge() const =0
Return the charge of the track currently transported.
virtual void TrackPosition(TLorentzVector &position) const =0
Return the current position in the master reference frame of the track being transported.
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.
virtual void StopTrack()=0
Stop the transport of the current particle and skip to the next.
virtual Bool_t SetProcess(const char *flagName, Int_t flagValue)=0
Set process control.
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 Int_t NSecondaries() const =0
Return the number of secondary particles generated in the current step.
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.
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 void BuildPhysics()=0
Initialize MC physics.
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...
virtual void SetRootGeometry()=0
Set geometry from Root (built via TGeo)
TVirtualMagField * GetMagField() const
Return the magnetic field.
virtual void SetStack(TVirtualMCStack *stack)
Set the particle stack.
virtual Double_t TrackStep() const =0
Return the length in centimeters of the current step (in cm)
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.
void SetManagerStack(TMCManagerStack *stack)
Set container holding additional information for transported TParticles.
virtual Double_t TrackWeight() const
Get the current weight.
virtual Double_t NIELEdep() const
Return the non-ionising energy lost (NIEL) in the current step.
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 Bool_t IsTrackOut() const =0
Return true if the track is out of the setup.
TVirtualMagField * fMagField
Magnetic field.
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 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 SetCut(const char *cutName, Double_t cutValue)=0
Set transport cuts for particles.
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 Int_t VolId(const char *volName) const =0
Return the unique numeric identifier for volume name volName.
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 void SetSkinSurface(const char *name, const char *volName, const char *opSurfaceName)=0
Define the optical skin surface.
virtual void SetCerenkov(Int_t itmed, Int_t npckov, Double_t *ppckov, Double_t *absco, Double_t *effic, Double_t *rindex)=0
The same as previous but in double precision.
static TMCThreadLocal TVirtualMC * fgMC
Static TVirtualMC pointer.
virtual void SetExclusiveSDScoring(Bool_t exclusiveSDScoring)
The scoring option: if true, scoring is performed only via user defined sensitive detectors and MCApp...
TVirtualMCApplication * fApplication
User MC application.
virtual void TrackMomentum(Float_t &px, Float_t &py, Float_t &pz, Float_t &etot) const =0
Return the direction and the momentum (GeV/c) of the track currently being transported (as float)
virtual void SetCollectTracks(Bool_t collectTracks)=0
(In)Activate collecting TGeo tracks
virtual void SetExternalDecayer(TVirtualMCDecayer *decayer)
Set the external decayer.
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 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 Int_t Gsvolu(const char *name, const char *shape, Int_t nmed, Double_t *upar, Int_t np)=0
The same as previous but in double precision.
virtual void TrackMomentum(TLorentzVector &momentum) const =0
Return the direction and the momentum (GeV/c) of the track currently being transported.
TVirtualMCStack * GetStack() const
Return the particle stack.
virtual Int_t MediumId(const char *mediumName) const =0
Return the unique numeric identifier for medium name mediumName.
virtual Double_t Xsec(char *, Double_t, Int_t, Int_t)=0
Calculate X-sections (Geant3 only) Deprecated.
virtual Int_t NofVolDaughters(const char *volName) const =0
Return number of daughters of the volume specified by volName.
Int_t GetId() const
Return the VMC's ID.
virtual void TrackMomentum(Double_t &px, Double_t &py, Double_t &pz, Double_t &etot) const =0
Return the direction and the momentum (GeV/c) of the track currently being transported (as double)
virtual Bool_t IsTrackExiting() const =0
Return true if this is the last step of the track in the current volume.
virtual Int_t GetMaxNStep() const =0
Return the maximum number of steps allowed in the current medium.
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 SetMagField(TVirtualMagField *field)
Set the magnetic field.
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.
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 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...
virtual void SetMaxNStep(Int_t)=0
Set the maximum number of steps till the particle is in the current medium.
virtual ~TVirtualMC()
Destructor.
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.
TVirtualMCStack * fStack
Particles stack.
virtual Bool_t IsRootGeometrySupported() const =0
Info about supporting geometry defined via Root.
virtual Int_t PDGFromId(Int_t id) const =0
Return PDG code and pseudo ENDF code from MC specific code (id)
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 NofVolumes() const =0
Return total number of volumes in the geometry.
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 const char * CurrentVolPath()=0
Return the path in geometry tree for the current volume.
virtual void StopEvent()=0
Stop simulation of the current event and skip to the next.
TVirtualMCDecayer * fDecayer
External decayer.
Abstract class for magnetic field.