13 #ifndef ROOT_TVirtualMC 14 #define ROOT_TVirtualMC 195 virtual void Gsdvn(
const char *name,
const char *mother,
Int_t ndiv,
202 virtual void Gsdvn2(
const char *name,
const char *mother,
Int_t ndiv,
213 virtual void Gsdvt(
const char *name,
const char *mother,
Double_t step,
224 virtual void Gsdvt2(
const char *name,
const char *mother,
Double_t step,
230 virtual void Gsord(
const char *name,
Int_t iax) = 0;
242 virtual void Gspos(
const char *name,
Int_t nr,
const char *mother,
244 const char *konly=
"ONLY") = 0;
248 virtual void Gsposp(
const char *name,
Int_t nr,
const char *mother,
253 virtual void Gsposp(
const char *name,
Int_t nr,
const char *mother,
261 virtual void Gsbool(
const char* onlyVolName,
const char* manyVolName) = 0;
309 const char* vol1Name,
int vol1CopyNo,
310 const char* vol2Name,
int vol2CopyNo,
311 const char* opSurfaceName) = 0;
320 const char* opSurfaceName) = 0;
330 Int_t itmed,
const char* propertyName,
339 Int_t itmed,
const char* propertyName,
350 const char* surfaceName,
const char* propertyName,
398 virtual void WriteEuclid(
const char* filnam,
const char* topvol,
416 virtual Int_t VolId(
const char* volName)
const = 0;
831 virtual void Init() = 0;
899 #if !defined(__CINT__) 921 Warning(
"SetSensitiveDetector(...)",
"New function - not yet implemented.");
929 Warning(
"GetSensitiveDetector()",
"New function - not yet implemented.");
940 Warning(
"SetExclusiveSDScoring(...)",
"New function - not yet implemented.");
947 Warning(
"NIELEdep()",
"New function - not yet implemented.");
952 #define gMC (TVirtualMC::GetMC()) 954 #endif //ROOT_TVirtualMC virtual Bool_t IsTrackExiting() const =0
Return true if this is the last step of the track in the current volume.
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 Bool_t IsMT() const
Return the info if multi-threading is supported/activated.
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 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...
static TMCThreadLocal TVirtualMC * fgMC
Monte Carlo singleton instance.
virtual Double_t Etot() const =0
Return the total energy of the current track.
virtual Double_t ParticleLifeTime(Int_t pdg) const =0
Return life time of the particle specified by pdg.
TVirtualMCStack * fStack
Particles stack.
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...
TMCParticleType
VMC particle type codes.
virtual Int_t VolId2Mate(Int_t id) const =0
Return material number for a given volume id.
EMCOpSurfaceModel
Optical surface models.
TVirtualMC & operator=(const TVirtualMC &)
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 const char * VolName(Int_t id) const =0
Return the volume name for a given volume identifier id.
virtual Int_t IdFromPDG(Int_t pdg) const =0
Return MC specific code from a PDG and pseudo ENDF code (pdg)
virtual TVirtualMCSensitiveDetector * GetSensitiveDetector(const TString &volName) const
Get a sensitive detector of a volume.
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.
image html pict1_TGaxis_012 png width
Define new text attributes for the label number "labNum".
TRandom * fRandom
Random number generator.
virtual Int_t CurrentMedium() const =0
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 MediumId(const char *mediumName) const =0
Return the unique numeric identifier for medium name mediumName.
virtual Double_t ParticleMass(Int_t pdg) const =0
Return mass of the particle specified by pdg.
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.
virtual Double_t TrackTime() const =0
Return the current time of flight of the track being transported.
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 void SetRootGeometry()=0
Set geometry from Root (built via TGeo)
virtual void SetSensitiveDetector(const TString &volName, TVirtualMCSensitiveDetector *sd)
Set a sensitive detector to a volume.
virtual void InitLego()=0
Set switches for lego transport.
virtual void SetExclusiveSDScoring(Bool_t exclusiveSDScoring)
The scoring option: if true, scoring is performed only via user defined sensitive detectors and MCApp...
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 Double_t TrackCharge() const =0
Return the charge of the track currently transported.
virtual void StopRun()=0
Stop simulation of the current event and set the abort run flag to true.
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 Int_t GetMaxNStep() const =0
Return the maximum number of steps allowed in the current medium.
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).
virtual const char * CurrentVolName() const =0
Return the current volume name.
EMCOpSurfaceFinish
Optical surface finish types.
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 ~TVirtualMC()
Destructor.
virtual Bool_t IsTrackAlive() const =0
Return true if the current particle is alive and will continue to be transported. ...
#define ClassDef(name, id)
TVirtualMC()
Default constructor.
This is the base class for the ROOT Random number generators.
virtual void TrackPosition(TLorentzVector &position) const =0
Return the current position in the master reference frame of the track being transported.
The TNamed class is the base class for all named ROOT classes.
virtual Double_t NIELEdep() const
Return the non-ionising energy lost (NIEL) in the current step.
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 Int_t NSecondaries() const =0
Return the number of secondary particles generated in the current step.
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 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 void SetCollectTracks(Bool_t collectTracks)=0
(In)Activate collecting TGeo tracks
virtual Int_t CurrentEvent() const =0
Return the number of the current event.
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 Double_t Edep() const =0
Return the energy lost in the current step.
virtual Bool_t SecondariesAreOrdered() const =0
Return the information about the transport order needed by the stack.
virtual Bool_t IsTrackInside() const =0
Return true if the track is not at the boundary of the current volume.
virtual Int_t CurrentVolID(Int_t ©No) const =0
Return the current volume ID and copy number.
virtual Int_t StepProcesses(TArrayI &proc) const =0
Return the array of the VMC code of the processes active in the current step.
virtual Double_t TrackStep() const =0
Return the length in centimeters of the current step (in cm)
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...
TVirtualMagField * fMagField
Magnetic field.
Interface to a user defined sensitive detector.
virtual Double_t TrackLength() const =0
Return the length of the current track from its origin (in cm)
virtual Double_t TrackMass() const =0
Return the mass of the track currently transported.
virtual Bool_t IsNewTrack() const =0
Return true when the track performs the first step.
virtual Int_t PDGFromId(Int_t id) const =0
Return PDG code and pseudo ENDF code from MC specific code (id)
virtual Double_t MaxStep() const =0
Return the maximum step length in the current medium.
TRandom * GetRandom() const
Return the random number generator.
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 Bool_t IsTrackDisappeared() const =0
Return true if the current particle has disappeared either because it decayed or because it underwent...
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 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 Gsvolu(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t np)=0
Create a new volume.
virtual Bool_t SetProcess(const char *flagName, Int_t flagValue)=0
Set process control.
virtual void StopEvent()=0
Stop simulation of the current event and skip to the next.
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...
TVirtualMCDecayer * GetDecayer() const
Return the external decayer.
virtual void SetSkinSurface(const char *name, const char *volName, const char *opSurfaceName)=0
Define the optical skin surface.
virtual Double_t ParticleCharge(Int_t pdg) const =0
Return charge (in e units) of the particle specified by pdg.
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 TString ParticleName(Int_t pdg) const =0
Return name of the particle specified by pdg.
TVirtualMagField * GetMagField() const
Return the magnetic field.
virtual void SetMagField(TVirtualMagField *field)
Set the magnetic field.
virtual void ProcessEvent()=0
Process one event Deprecated.
Abstract Monte Carlo interface.
virtual void SetRandom(TRandom *random)
Set the random number generator.
virtual TMCParticleType ParticleMCType(Int_t pdg) const =0
Return VMC type of the particle specified by pdg.
virtual Bool_t IsCollectTracks() const =0
Return the info if collecting tracks is activated.
virtual Double_t Xsec(char *, Double_t, Int_t, Int_t)=0
Calculate X-sections (Geant3 only) Deprecated.
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.
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 Bool_t IsTrackEntering() const =0
Return true if this is the first step of the track in the current volume.
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...
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 SetStack(TVirtualMCStack *stack)
Set the particle stack.
virtual Bool_t IsTrackOut() const =0
Return true if the track is out of the setup.
virtual Int_t TrackPid() const =0
Return the PDG of the particle transported.
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 NofVolumes() const =0
Return total number of volumes in the geometry.
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 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 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 Int_t VolId(const char *volName) const =0
Return the unique numeric identifier for volume name volName.
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 Int_t NofVolDaughters(const char *volName) const =0
Return number of daughters of the volume specified by volName.
static TVirtualMC * GetMC()
Static access method.
virtual Bool_t IsTrackStop() const =0
Return true if the track energy has fallen below the threshold.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual Bool_t IsRootGeometrySupported() const =0
Info about supporting geometry defined via Root.
EMCOpSurfaceType
Optical surface types.