19#include <TMCOptical.h>
20#include <TMCProcess.h>
22#include <TVirtualMC.h>
38class TVirtualMCApplication;
39class TVirtualMCSensitiveDetector;
49 TGeant4(
const char* name,
const char* title,
66 virtual void Gfmate(Int_t imat,
char* name, Float_t& a, Float_t& z,
67 Float_t& dens, Float_t& radl, Float_t& absl, Float_t* ubuf, Int_t& nbuf);
68 virtual void Gfmate(Int_t imat,
char* name, Double_t& a, Double_t& z,
69 Double_t& dens, Double_t& radl, Double_t& absl, Double_t* ubuf,
71 virtual void Gckmat(Int_t itmed,
char* natmed);
74 virtual void Material(Int_t& kmat,
const char* name, Double_t a, Double_t z,
75 Double_t dens, Double_t radl, Double_t absl, Float_t* buf, Int_t nwbuf);
76 virtual void Material(Int_t& kmat,
const char* name, Double_t a, Double_t z,
77 Double_t dens, Double_t radl, Double_t absl, Double_t* buf, Int_t nwbuf);
78 virtual void Mixture(Int_t& kmat,
const char* name, Float_t* a, Float_t* z,
79 Double_t dens, Int_t nlmat, Float_t* wmat);
80 virtual void Mixture(Int_t& kmat,
const char* name, Double_t* a, Double_t* z,
81 Double_t dens, Int_t nlmat, Double_t* wmat);
82 virtual void Medium(Int_t& kmed,
const char* name, Int_t nmat, Int_t isvol,
83 Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax,
84 Double_t deemax, Double_t epsil, Double_t stmin, Float_t* ubuf, Int_t nbuf);
85 virtual void Medium(Int_t& kmed,
const char* name, Int_t nmat, Int_t isvol,
86 Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax,
87 Double_t deemax, Double_t epsil, Double_t stmin, Double_t* ubuf,
89 virtual void Matrix(Int_t& krot, Double_t thetaX, Double_t phiX,
90 Double_t thetaY, Double_t phiY, Double_t thetaZ, Double_t phiZ);
91 virtual void SetCerenkov(Int_t itmed, Int_t npckov, Float_t* ppckov,
92 Float_t* absco, Float_t* effic, Float_t* rindex, Bool_t aspline =
false,
93 Bool_t rspline =
false);
94 virtual void SetCerenkov(Int_t itmed, Int_t npckov, Double_t* ppckov,
95 Double_t* absco, Double_t* effic, Double_t* rindex, Bool_t aspline =
false,
96 Bool_t rspline =
false);
100 virtual void DefineOpSurface(
const char* name, EMCOpSurfaceModel model,
101 EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish,
102 Double_t sigmaAlpha);
104 int vol1CopyNo,
const char* vol2Name,
int vol2CopyNo,
105 const char* opSurfaceName);
107 const char* name,
const char* volName,
const char* opSurfaceName);
109 Int_t np, Double_t* pp, Double_t* values, Bool_t createNewKey =
false,
110 Bool_t spline =
false);
112 Int_t itmed,
const char* propertyName, Double_t value);
114 const char* propertyName, Int_t np, Double_t* pp, Double_t* values,
115 Bool_t createNewKey =
false, Bool_t spline =
false);
119 const TString& volumePath, TGeoHMatrix& matrix);
121 const TString& volumePath, TString& shapeType, TArrayD& par);
122 virtual Bool_t
GetMaterial(Int_t imat, TString& name, Double_t& a,
123 Double_t& z, Double_t& density, Double_t& radl, Double_t& inter,
125 virtual Bool_t
GetMaterial(
const TString& volumeName, TString& name,
126 Int_t& imat, Double_t& a, Double_t& z, Double_t& density, Double_t& radl,
127 Double_t& inter, TArrayD& par);
128 virtual Bool_t
GetMedium(
const TString& volumeName, TString& name,
129 Int_t& imed, Int_t& nmat, Int_t& isvol, Int_t& ifield, Double_t& fieldm,
130 Double_t& tmaxfd, Double_t& stemax, Double_t& deemax, Double_t& epsil,
131 Double_t& stmin, TArrayD& par);
135 const char* name,
const char* shape, Int_t nmed, Double_t* upar, Int_t np);
137 const char* name,
const char* shape, Int_t nmed, Float_t* upar, Int_t np);
139 const char* name,
const char* mother, Int_t ndiv, Int_t iaxis);
140 virtual void Gsdvn2(
const char* name,
const char* mother, Int_t ndiv,
141 Int_t iaxis, Double_t c0i, Int_t numed);
142 virtual void Gsdvt(
const char* name,
const char* mother, Double_t step,
143 Int_t iaxis, Int_t numed, Int_t ndvmx);
144 virtual void Gsdvt2(
const char* name,
const char* mother, Double_t step,
145 Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx);
146 virtual void Gsord(
const char* name, Int_t iax);
147 virtual void Gspos(
const char* name, Int_t nr,
const char* mother, Double_t x,
148 Double_t y, Double_t z, Int_t irot,
const char* konly =
"ONLY");
149 virtual void Gsposp(
const char* name, Int_t nr,
const char* mother,
150 Double_t x, Double_t y, Double_t z, Int_t irot,
const char* konly,
151 Double_t* upar, Int_t np);
152 virtual void Gsposp(
const char* name, Int_t nr,
const char* mother,
153 Double_t x, Double_t y, Double_t z, Int_t irot,
const char* konly,
154 Float_t* upar, Int_t np);
155 virtual void Gsbool(
const char* onlyVolName,
const char* manyVolName);
159 const char* fileName,
const char* topVol, Int_t number, Int_t nlevel);
170 virtual Int_t
VolId(
const Text_t* volName)
const;
171 virtual const char*
VolName(Int_t
id)
const;
172 virtual Int_t
MediumId(
const Text_t* medName)
const;
175 virtual const char*
VolDaughterName(
const char* volName, Int_t i)
const;
185 const TString& volName, TVirtualMCSensitiveDetector* sd);
187 const TString& volName)
const;
196 virtual void Gstpar(Int_t itmed,
const char* param, Double_t parval);
199 virtual Bool_t
SetCut(
const char* cutName, Double_t cutValue);
200 virtual Bool_t
SetProcess(
const char* flagName, Int_t flagValue);
202 TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime);
204 TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime,
205 const TString& pType, Double_t width, Int_t iSpin, Int_t iParity,
206 Int_t iConjugation, Int_t iIsospin, Int_t iIsospinZ, Int_t gParity,
207 Int_t lepton, Int_t baryon, Bool_t stable, Bool_t shortlived = kFALSE,
208 const TString& subType =
"", Int_t antiEncoding = 0,
209 Double_t magMoment = 0.0, Double_t excitation = 0.0);
210 virtual Bool_t
DefineIon(
const char* name, Int_t Z, Int_t A, Int_t Q,
211 Double_t excEnergy, Double_t mass);
212 virtual Double_t
Xsec(
char* reac, Double_t energy, Int_t part, Int_t mate);
215 virtual Int_t
IdFromPDG(Int_t pdgID)
const;
216 virtual Int_t
PDGFromId(Int_t mcID)
const;
242 Int_t pdg, Float_t bratio[6], Int_t mode[6][3]);
252 Double_t& x, Double_t& y, Double_t& z)
const;
254 Float_t& a, Float_t& z, Float_t& dens, Float_t& radl, Float_t& absl)
const;
256 virtual void Gmtod(Float_t* xm, Float_t* xd, Int_t iflag);
257 virtual void Gmtod(Double_t* xm, Double_t* xd, Int_t iflag);
258 virtual void Gdtom(Float_t* xd, Float_t* xm, Int_t iflag);
259 virtual void Gdtom(Double_t* xd, Double_t* xm, Int_t iflag);
271 Double_t& px, Double_t& py, Double_t& pz, Double_t& etot)
const;
273 Float_t& px, Float_t& py, Float_t& pz, Float_t& etot)
const;
282 Double_t& polX, Double_t& polY, Double_t& polZ)
const;
303 TLorentzVector& position, TLorentzVector& momentum);
313 virtual void Gsatt(
const char* name,
const char* att, Int_t val);
314 virtual void Gdraw(
const char*, Double_t theta, Double_t phi, Double_t psi,
315 Double_t u0, Double_t v0, Double_t ul, Double_t vl);
321 virtual void Gdopt(
const char* name,
const char* value);
322 virtual void SetClipBox(
const char* name, Double_t xmin, Double_t xmax,
323 Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax);
325 virtual void Gdhead(Int_t isel,
const char* name, Double_t chrsiz);
326 virtual void Gdman(Double_t u, Double_t v,
const char* type);
335 virtual void InitMT(Int_t threadRank);
338 virtual void ProcessEvent(Int_t eventId, Bool_t isInterruptible);
The manager class for building Geant4 geometry depending on a selected user input.
Geant4 implementation of the TVirtualMC interface methods for building Geant4 physics and access to i...
Takes care of creating Geant4 user action classes using VMC.
Geant4 implementation of the TVirtualMC interface methods for access to Geant4 at run level.
Geant4 implementation of the TVirtualMC interface methods for access to Geant4 geometry related with ...
The manager class for application state.
Geant4 implementation of the TVirtualMC interface methods for access to Geant4 at step level.
Visualization manager class.
Implementation of the TVirtualMC interface for Geant4.
virtual Int_t PDGFromId(Int_t mcID) const
virtual void Gmtod(Double_t *xm, Double_t *xd, Int_t iflag)
virtual const char * VolDaughterName(const char *volName, Int_t i) const
virtual Bool_t SetProcess(const char *flagName, Int_t flagValue)
virtual Bool_t IsTrackOut() const
TG4StepManager * fStepManager
step manager
virtual Double_t TrackWeight() const
virtual Double_t Xsec(char *reac, Double_t energy, Int_t part, Int_t mate)
TG4StateManager * fStateManager
application state manager
TG4GeometryManager * fGeometryManager
geometry manager
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)
Int_t fMediumCounter
global medium counter
virtual Bool_t IsTrackDisappeared() const
virtual Bool_t IsTrackStop() const
virtual void BuildPhysics()
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 TMCParticleType ParticleMCType(Int_t pdg) const
static TVirtualMCApplication * fgMasterApplicationInstance
master application instance
static TVirtualMCApplication * MasterApplicationInstance()
virtual Double_t TrackCharge() const
TG4RunManager * fRunManager
run manager
virtual Double_t ParticleMass(Int_t pdg) const
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 Int_t TrackPid() const
virtual void SetMaterialProperty(Int_t itmed, const char *propertyName, Int_t np, Double_t *pp, Double_t *values, Bool_t createNewKey=false, Bool_t spline=false)
virtual Bool_t GetShape(const TString &volumePath, TString &shapeType, TArrayD &par)
virtual void Gdraw(const char *, Double_t theta, Double_t phi, Double_t psi, Double_t u0, Double_t v0, Double_t ul, Double_t vl)
virtual Double_t ParticleLifeTime(Int_t pdg) const
virtual void TrackPosition(TLorentzVector &position) const
virtual void TrackPolarization(TVector3 &pol) const
Bool_t fIsMT
multi-threading mode
virtual void SetExclusiveSDScoring(Bool_t exclusiveSDScoring)
TG4PhysicsManager * fPhysicsManager
physics manager
virtual void WriteEuclid(const char *fileName, const char *topVol, Int_t number, Int_t nlevel)
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 Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis)
virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag)
virtual Bool_t IsCollectTracks() const
virtual void SetUserDecay(Int_t)
virtual const char * CurrentVolPath()
virtual Int_t StepNumber() const
virtual Double_t Edep() const
virtual Double_t TrackLength() const
virtual void TrackPosition(Double_t &x, Double_t &y, Double_t &z) const
virtual Bool_t DefineIon(const char *name, Int_t Z, Int_t A, Int_t Q, Double_t excEnergy, Double_t mass)
virtual Bool_t IsTrackExiting() const
virtual const char * CurrentVolName() const
virtual Double_t NIELEdep() const
virtual void DefineOpSurface(const char *name, EMCOpSurfaceModel model, EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha)
virtual Double_t TrackStep() const
virtual Bool_t IsMT() const
virtual Int_t CurrentVolOffID(Int_t off, Int_t ©No) const
virtual Double_t TrackMass() const
virtual void FinishGeometry()
virtual TMCProcess ProdProcess(Int_t isec) const
virtual void TrackPosition(Float_t &x, Float_t &y, Float_t &z) const
virtual const char * CurrentVolOffName(Int_t off) const
virtual Int_t NSecondaries() const
virtual Int_t StepProcesses(TArrayI &proc) const
virtual void TrackMomentum(Float_t &px, Float_t &py, Float_t &pz, Float_t &etot) const
Int_t fMatrixCounter
global matrix counter
virtual Int_t IdFromPDG(Int_t pdgID) const
virtual void ProcessEvent()
virtual Bool_t GetTransformation(const TString &volumePath, TGeoHMatrix &matrix)
virtual void Gdopt(const char *name, const char *value)
virtual void Gsdvt(const char *name, const char *mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)
virtual Int_t GetMedium() const
virtual void SetRootGeometry()
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 SetMaxNStep(Int_t)
virtual void Gckmat(Int_t itmed, char *natmed)
virtual Double_t TrackTime() const
virtual Double_t Etot() const
virtual const char * VolName(Int_t id) const
TG4RunConfiguration * fRunConfiguration
run configuration
virtual void SetClipBox(const char *name, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax)
virtual void Gsatt(const char *name, const char *att, Int_t val)
virtual void SetSkinSurface(const char *name, const char *volName, const char *opSurfaceName)
virtual void InterruptTrack()
virtual void DrawOneSpec(const char *name)
virtual void SetBorderSurface(const char *name, const char *vol1Name, int vol1CopyNo, const char *vol2Name, int vol2CopyNo, const char *opSurfaceName)
virtual Bool_t DefineParticle(Int_t pdg, const char *name, TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime)
virtual Bool_t SetDecayMode(Int_t pdg, Float_t bratio[6], Int_t mode[6][3])
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)
virtual void SetUserParameters(Bool_t isUserParameters)
virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag)
virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed, Double_t *upar, Int_t np)
virtual Int_t VolId2Mate(Int_t id) const
virtual Bool_t IsTrackEntering() const
TGeant4(const TGeant4 &right)
Not implemented.
virtual Bool_t ProcessRun(Int_t nofEvents)
virtual Int_t CurrentVolID(Int_t ©No) const
virtual Int_t GetMaxNStep() const
TString fUserGeometry
user geometry
G4VisExecutive * fVisExecutive
Geant4 visualization manager.
virtual Bool_t IsNewTrack() const
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")
Int_t fMaterialCounter
global material counter
virtual void TrackPolarization(Double_t &polX, Double_t &polY, Double_t &polZ) const
virtual void ForceDecayTime(Float_t)
virtual Bool_t CurrentBoundaryNormal(Double_t &x, Double_t &y, Double_t &z) const
virtual Int_t MediumId(const Text_t *medName) const
TG4VisManager * fVisManager
visualization manager
virtual TString ParticleName(Int_t pdg) const
virtual void SetCollectTracks(Bool_t collectTracks)
TGeant4 & operator=(const TGeant4 &right)
Not implemented.
virtual Double_t MaxStep() const
virtual Bool_t SecondariesAreOrdered() const
virtual void TrackMomentum(TLorentzVector &momentum) const
virtual Bool_t IsTrackInside() const
void ProcessGeantCommand(const char *commandPath)
TG4SDManager * fSDManager
sensitive detectors manager
virtual void InitMT(Int_t threadRank)
TGeant4()
Not implemented.
virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)
virtual void Gsord(const char *name, Int_t iax)
virtual void SetSensitiveDetector(const TString &volName, TVirtualMCSensitiveDetector *sd)
virtual void SetMaxStep(Double_t)
virtual Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const
virtual Int_t VolId(const Text_t *volName) const
virtual Int_t NofVolumes() const
virtual Bool_t SetCut(const char *cutName, Double_t cutValue)
virtual Int_t CurrentEvent() const
void ProcessGeantMacro(const char *macroName)
virtual void SetCerenkov(Int_t itmed, Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex, Bool_t aspline=false, Bool_t rspline=false)
virtual Int_t NofVolDaughters(const char *volName) const
static TGeant4 * MasterInstance()
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 Bool_t IsRootGeometrySupported() const
virtual void Gstpar(Int_t itmed, const char *param, Double_t parval)
virtual void DefaultRange()
TGeant4 * CloneForWorker() const
virtual Int_t CurrentMedium() const
static TGeant4 * fgMasterInstance
master instance
virtual Int_t VolDaughterCopyNo(const char *volName, Int_t i) const
virtual void Gdtom(Double_t *xd, Double_t *xm, Int_t iflag)
virtual void Gdman(Double_t u, Double_t v, const char *type)
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 void TrackMomentum(Double_t &px, Double_t &py, Double_t &pz, Double_t &etot) const
virtual TVirtualMCSensitiveDetector * GetSensitiveDetector(const TString &volName) const
virtual Double_t ParticleCharge(Int_t pdg) const
virtual void Gdhead(Int_t isel, const char *name, Double_t chrsiz)
virtual Bool_t IsTrackAlive() const
virtual void Gsbool(const char *onlyVolName, const char *manyVolName)
virtual void GetSecondary(Int_t isec, Int_t &particleId, TLorentzVector &position, TLorentzVector &momentum)