All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Protected Attributes | Private Member Functions | List of all members
TGeant3TGeo Class Reference

#include <TGeant3TGeo.h>

Inheritance diagram for TGeant3TGeo:
TGeant3

Public Member Functions

 TGeant3TGeo ()
 
 TGeant3TGeo (const char *title, Int_t nwgeant=0)
 
virtual void LoadAddress ()
 
virtual ~TGeant3TGeo ()
 
virtual Bool_t IsRootGeometrySupported () const
 
void GeomIter ()
 
Int_t NextVolUp (Text_t *name, Int_t &copy)
 
Int_t CurrentVolID (Int_t &copy) const
 
Int_t CurrentVolOffID (Int_t off, Int_t &copy) const
 
const char * CurrentVolName () const
 
const char * CurrentVolOffName (Int_t off) const
 
const char * CurrentVolPath ()
 
Int_t VolId (const Text_t *name) const
 
const char * VolName (Int_t id) const
 
Int_t NofVolumes () 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
 
Int_t VolId2Mate (Int_t id) const
 
const char * GetPath ()
 
const char * GetNodeName ()
 
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=0, Int_t nwbuf=0)
 
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 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 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=0, Int_t nbuf=0)
 
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 Matrix (Int_t &krot, Double_t thex, Double_t phix, Double_t they, Double_t phiy, Double_t thez, Double_t phiz)
 
virtual void SetRootGeometry ()
 
virtual Gcvol1_tGcvol1 () const
 
virtual void Ggclos ()
 
virtual void Gprint (const char *name)
 
virtual void Gsmate (Int_t imat, const char *name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl)
 
virtual void Gsmixt (Int_t imat, const char *name, Float_t *a, Float_t *z, Float_t dens, Int_t nlmat, Float_t *wmat)
 
virtual void Gstmed (Int_t numed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin)
 
virtual void Gtreve ()
 
virtual void GtreveRoot ()
 
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 void Gmedia (Float_t *x, Int_t &numed)
 
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 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 Gsdvs (const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed)
 
virtual void Gsdvs2 (const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, 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 Gsrotm (Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3, Float_t phi3)
 
virtual void Gprotm (Int_t nmat=0)
 
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 void Gsatt (const char *name, const char *att, Int_t val)
 
virtual Int_t Glvolu (Int_t nlev, Int_t *lnam, Int_t *lnum)
 
virtual Bool_t GetTransformation (const TString &volumePath, TGeoHMatrix &matrix)
 
virtual Bool_t GetShape (const TString &volumePath, TString &shapeType, TArrayD &par)
 
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)
 
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)
 
virtual Int_t GetMedium () const
 
virtual void Gdshow (Int_t view)
 
virtual void Gdopt (const char *name, const char *value)
 
virtual void Gdraw (const char *name, 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 Gdrawc (const char *name, Int_t axis=1, Float_t cut=0, Float_t u0=10, Float_t v0=10, Float_t ul=0.01, Float_t vl=0.01)
 
virtual void Gdrawx (const char *name, Float_t cutthe, Float_t cutphi, Float_t cutval, Float_t theta=30, Float_t phi=30, Float_t u0=10, Float_t v0=10, Float_t ul=0.01, Float_t vl=0.01)
 
virtual void Gdspec (const char *name)
 
virtual void DrawOneSpec (const char *name)
 
virtual void Gdtree (const char *name, Int_t levmax=15, Int_t ispec=0)
 
virtual void GdtreeParent (const char *name, Int_t levmax=15, Int_t ispec=0)
 
virtual void FinishGeometry ()
 
virtual void SetColors ()
 
- Public Member Functions inherited from TGeant3
 TGeant3 ()
 
 TGeant3 (const char *title, Int_t nwgeant=0)
 
virtual ~TGeant3 ()
 
void GeomIter ()
 
Int_t CurrentMaterial (Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const
 
Int_t NextVolUp (Text_t *name, Int_t &copy)
 
Int_t CurrentVolID (Int_t &copy) const
 
Int_t CurrentVolOffID (Int_t off, Int_t &copy) const
 
const char * CurrentVolName () const
 
const char * CurrentVolOffName (Int_t off) const
 
const char * CurrentVolPath ()
 
Int_t VolId (const Text_t *name) const
 
Int_t MediumId (const Text_t *name) const
 
Int_t IdFromPDG (Int_t pdg) const
 
Int_t PDGFromId (Int_t pdg) const
 
const char * VolName (Int_t id) const
 
Double_t Xsec (char *reac, Double_t energy, Int_t part, Int_t mate)
 
void TrackPosition (TLorentzVector &xyz) const
 
void TrackPosition (Double_t &x, Double_t &y, Double_t &z) const
 
void TrackMomentum (TLorentzVector &xyz) const
 
void TrackMomentum (Double_t &px, Double_t &py, Double_t &pz, Double_t &etot) const
 
Int_t NofVolumes () 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
 
Int_t VolId2Mate (Int_t id) const
 
Double_t TrackTime () const
 
Double_t TrackCharge () const
 
Double_t TrackMass () const
 
Double_t TrackStep () const
 
Double_t TrackLength () const
 
Int_t TrackPid () 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
 
Int_t CurrentEvent () const
 
TMCProcess ProdProcess (Int_t isec) const
 
Int_t StepProcesses (TArrayI &proc) const
 
void GetSecondary (Int_t isec, Int_t &ipart, TLorentzVector &x, TLorentzVector &p)
 
Bool_t SecondariesAreOrdered () const
 
void StopTrack ()
 
void StopEvent ()
 
void StopRun ()
 
Double_t MaxStep () const
 
void SetMaxStep (Double_t maxstep)
 
void SetMaxNStep (Int_t maxnstp)
 
Int_t GetMaxNStep () const
 
void ForceDecayTime (Float_t time)
 
void SetSkipNeutrinos (Bool_t flag)
 
Bool_t SkipNeutrinos ()
 
Bool_t SetCut (const char *cutName, Double_t cutValue)
 
Bool_t SetProcess (const char *flagName, Int_t flagValue)
 
const char * GetPath ()
 
const char * GetNodeName ()
 
Bool_t DefineParticle (Int_t pdg, const char *name, TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime)
 
Bool_t DefineParticle (Int_t pdg, const char *name, TMCParticleType mcType, Double_t mass, Double_t charge, Double_t lifetime, const TString &, Double_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Bool_t, Bool_t=kFALSE, const TString &="", Int_t=0, Double_t=0.0, Double_t=0.0)
 
Bool_t DefineIon (const char *name, Int_t Z, Int_t A, Int_t Q, Double_t excEnergy, Double_t mass)
 
virtual TString ParticleName (Int_t pdg) const
 
virtual Double_t ParticleMass (Int_t pdg) const
 
virtual Double_t ParticleCharge (Int_t pdg) const
 
virtual Double_t ParticleLifeTime (Int_t pdg) const
 
virtual TMCParticleType ParticleMCType (Int_t pdg) const
 
virtual Int_t CurrentMedium () const
 
virtual Double_t Edep () const
 
virtual Double_t Etot () const
 
virtual void SetUserParameters (Bool_t isUserParameters)
 
Bool_t GetTransformation (const TString &volumePath, TGeoHMatrix &mat)
 
Bool_t GetShape (const TString &volumePath, TString &shapeType, TArrayD &par)
 
Bool_t GetMaterial (const TString &volumeName, TString &name, Int_t &imat, Double_t &a, Double_t &z, Double_t &den, Double_t &radl, Double_t &inter, TArrayD &par)
 
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)
 
virtual Quest_tQuest () const
 
virtual Gcbank_tGcbank () const
 
virtual Gclink_tGclink () const
 
virtual Gccuts_tGccuts () const
 
virtual Gcmore_tGcmore () const
 
virtual Gcmulo_tGcmulo () const
 
virtual Gcmate_tGcmate () const
 
virtual Gctpol_tGctpol () const
 
virtual Gcnum_tGcnum () const
 
virtual Gcsets_tGcsets () const
 
virtual Gcopti_tGcopti () const
 
virtual Gctlit_tGctlit () const
 
virtual Gcvdma_tGcvdma () const
 
virtual Gcvolu_tGcvolu () const
 
virtual Gckine_tGckine () const
 
virtual Gcflag_tGcflag () const
 
virtual Gctmed_tGctmed () const
 
virtual Gcphys_tGcphys () const
 
virtual Gcphlt_tGcphlt () const
 
virtual Gcking_tGcking () const
 
virtual Gckin2_tGckin2 () const
 
virtual Gckin3_tGckin3 () const
 
virtual Gctrak_tGctrak () const
 
virtual Int_t * Iq () const
 
virtual Int_t * Lq () const
 
virtual Float_t * Q () const
 
virtual Ertrio_tErtrio () const
 
virtual Eropts_tEropts () const
 
virtual Eroptc_tEroptc () const
 
virtual Erwork_tErwork () const
 
virtual Trcom3_tTrcom3 () const
 
virtual Gconst_tGconst () const
 
virtual Gconsx_tGconsx () const
 
virtual Gcjump_tGcjump () const
 
virtual void Gpcxyz ()
 
virtual void Gfile (const char *filename, const char *option="I")
 
virtual void Glast ()
 
virtual void Grun ()
 
virtual void Gtrig ()
 
virtual void Gtrigc ()
 
virtual void Gtrigi ()
 
virtual void Gwork (Int_t nwork)
 
virtual void Gzinit ()
 
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 Gfpart (Int_t ipart, char *name, Int_t &itrtyp, Float_t &amass, Float_t &charge, Float_t &tlife) const
 
virtual void Gftmed (Int_t numed, char *name, Int_t &nmat, Int_t &isvol, Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd, Float_t &stemax, Float_t &deemax, Float_t &epsil, Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0)
 
virtual void Gftmat (Int_t imate, Int_t ipart, char *chmeca, Int_t kdim, Float_t *tkin, Float_t *value, Float_t *pcut, Int_t &ixst)
 
virtual Float_t Gbrelm (Float_t z, Float_t t, Float_t cut)
 
virtual Float_t Gprelm (Float_t z, Float_t t, Float_t cut)
 
virtual void Gmate ()
 
virtual void Gpart ()
 
virtual void Gsckov (Int_t itmed, Int_t npckov, Float_t *ppckov, Float_t *absco, Float_t *effic, Float_t *rindex)
 
virtual void Gsdk (Int_t ipart, Float_t *bratio, Int_t *mode)
 
virtual void Gfang (Float_t *p, Float_t &costh, Float_t &sinth, Float_t &cosph, Float_t &sinph, Int_t &rotate)
 
virtual void Gspart (Int_t ipart, const char *name, Int_t itrtyp, Double_t amass, Double_t charge, Double_t tlife)
 
virtual void Gstpar (Int_t itmed, const char *param, Double_t parval)
 
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 DefineOpSurface (const char *name, EMCOpSurfaceModel model, EMCOpSurfaceType surfaceType, EMCOpSurfaceFinish surfaceFinish, Double_t sigmaAlpha)
 
virtual void SetBorderSurface (const char *name, const char *vol1Name, int vol1CopyNo, const char *vol2Name, int vol2CopyNo, const char *opSurfaceName)
 
virtual void SetSkinSurface (const char *name, const char *volName, const char *opSurfaceName)
 
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 Gfkine (Int_t itra, Float_t *vert, Float_t *pvert, Int_t &ipart, Int_t &nvert)
 
virtual void Gfvert (Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg)
 
virtual Int_t Gskine (Float_t *plab, Int_t ipart, Int_t nv, Float_t *ubuf=0, Int_t nwbuf=0)
 
virtual Int_t Gsvert (Float_t *v, Int_t ntbeam, Int_t nttarg, Float_t *ubuf=0, Int_t nwbuf=0)
 
virtual void Gphysi ()
 
virtual void Gdebug ()
 
virtual void Gekbin ()
 
virtual void Gfinds ()
 
virtual void Gsking (Int_t igk)
 
virtual void Gskpho (Int_t igk)
 
virtual void Gsstak (Int_t iflag)
 
virtual void Gsxyz ()
 
virtual void Gtrack ()
 
virtual void Grndm (Float_t *rvec, Int_t len) const
 
virtual void Grndmq (Int_t &is1, Int_t &is2, Int_t iseq, const Text_t *chopt)
 
virtual void Gdxyz (Int_t it)
 
virtual void Gdcxyz ()
 
virtual void Glmoth (const char *iudet, Int_t iunum, Int_t &nlev, Int_t *lvols, Int_t *lindx)
 
virtual void Gfpara (const char *name, Int_t number, Int_t intext, Int_t &npar, Int_t &natt, Float_t *par, Float_t *att)
 
virtual void Gckpar (Int_t ish, Int_t npar, Float_t *par)
 
virtual void Gckmat (Int_t itmed, char *natmed)
 
virtual void Gsbool (const char *, const char *)
 
virtual void DefaultRange ()
 
virtual void InitHIGZ ()
 
virtual void Gdopen (Int_t view)
 
virtual void Gdclose ()
 
virtual void Gdelete (Int_t view)
 
virtual void Gdhead (Int_t isel, const char *name, Double_t chrsiz=0.6)
 
virtual void Gdman (Double_t u0, Double_t v0, const char *type="MAN")
 
virtual void WriteEuclid (const char *filnam, const char *topvol, Int_t number, Int_t nlevel)
 
virtual void SetABAN (Int_t par=1)
 
virtual void SetANNI (Int_t par=1)
 
virtual void SetAUTO (Int_t par=1)
 
virtual void SetBOMB (Float_t bomb=1)
 
virtual void SetBREM (Int_t par=1)
 
virtual void SetCKOV (Int_t par=1)
 
virtual void SetClipBox (const char *name, Double_t xmin=-9999, Double_t xmax=0, Double_t ymin=-9999, Double_t ymax=0, Double_t zmin=-9999, Double_t zmax=0)
 
virtual void SetCOMP (Int_t par=1)
 
virtual void SetCUTS (Float_t cutgam, Float_t cutele, Float_t cutneu, Float_t cuthad, Float_t cutmuo, Float_t bcute, Float_t bcutm, Float_t dcute, Float_t dcutm, Float_t ppcutm, Float_t tofmax, Float_t *gcuts)
 
virtual void InitGEANE ()
 
virtual void SetClose (Int_t iclose, Float_t *pf, Float_t dstrt, Float_t *w1, Float_t *w2, Float_t *p1, Float_t *p2, Float_t *p3, Float_t *cl)
 
virtual void GetClose (Float_t *p1, Float_t *p2, Float_t *p3, Float_t *len)
 
virtual void SetECut (Float_t gcalpha)
 
virtual void SetDCAY (Int_t par=1)
 
virtual void SetDEBU (Int_t emin=1, Int_t emax=999, Int_t emod=1)
 
virtual void SetDRAY (Int_t par=1)
 
virtual void SetERAN (Float_t ekmin=1.e-5, Float_t ekmax=1.e4, Int_t nekbin=90)
 
virtual void SetHADR (Int_t par=1)
 
virtual void SetKINE (Int_t kine, Float_t xk1=0, Float_t xk2=0, Float_t xk3=0, Float_t xk4=0, Float_t xk5=0, Float_t xk6=0, Float_t xk7=0, Float_t xk8=0, Float_t xk9=0, Float_t xk10=0)
 
virtual void SetLOSS (Int_t par=2)
 
virtual void SetMULS (Int_t par=1)
 
virtual void SetMUNU (Int_t par=1)
 
virtual void SetOPTI (Int_t par=2)
 
virtual void SetPAIR (Int_t par=1)
 
virtual void SetPFIS (Int_t par=1)
 
virtual void SetPHOT (Int_t par=1)
 
virtual void SetRAYL (Int_t par=1)
 
virtual void SetSTRA (Int_t par=0)
 
virtual void SetSWIT (Int_t sw, Int_t val=1)
 
virtual void SetTRIG (Int_t nevents=1)
 
virtual void SetUserDecay (Int_t ipart)
 
virtual Bool_t SetDecayMode (Int_t pdg, Float_t bratio[6], Int_t mode[6][3])
 
virtual void Vname (const char *name, char *vname)
 
virtual void InitLego ()
 
virtual void Ertrgo ()
 
virtual void Ertrak (const Float_t *x1, const Float_t *p1, const Float_t *x2, const Float_t *p2, Int_t ipa, Option_t *chopt)
 
virtual void Erxyzc ()
 
virtual void Eufill (Int_t n, Float_t *ein, Float_t *xlf)
 
virtual void Eufilp (const Int_t n, Float_t *ein, Float_t *pli, Float_t *plf)
 
virtual void Eufilv (Int_t n, Float_t *ein, Char_t *namv, Int_t *numv, Int_t *iovl)
 
virtual void Trscsd (Float_t *pc, Float_t *rc, Float_t *pd, Float_t *rd, Float_t *h, Float_t ch, Int_t ierr, Float_t spu, Float_t *dj, Float_t *dk)
 
virtual void Trsdsc (Float_t *pd, Float_t *rd, Float_t *pc, Float_t *rc, Float_t *h, Float_t *ch, Int_t *ierr, Float_t *spu, Float_t *dj, Float_t *dk)
 
virtual void Trscsp (Float_t *ps, Float_t *rs, Float_t *pc, Float_t *rc, Float_t *h, Float_t *ch, Int_t *ierr, Float_t *spx)
 
virtual void Trspsc (Float_t *ps, Float_t *rs, Float_t *pc, Float_t *rc, Float_t *h, Float_t *ch, Int_t *ierr, Float_t *spx)
 
virtual void BuildPhysics ()
 
virtual void Init ()
 
virtual void ProcessEvent ()
 
virtual Bool_t ProcessRun (Int_t nevent)
 
virtual void AddParticlesToPdgDataBase () const
 
void SetTrack (Int_t done, Int_t parent, Int_t pdg, Float_t *pmom, Float_t *vpos, Float_t *polar, Float_t tof, TMCProcess mech, Int_t &ntr, Float_t weight, Int_t is)
 

Protected Attributes

TGeoMCGeometry * fMCGeo
 
Bool_t fImportRootGeometry
 
Gcvol1_tfGcvol1
 
- Protected Attributes inherited from TGeant3
Int_t fNextVol
 
char fPath [512]
 
Int_t * fZiq
 
Int_t * fZlq
 Good Old IQ of Zebra. More...
 
Float_t * fZq
 Good Old LQ of Zebra. More...
 
Quest_tfQuest
 Good Old Q of Zebra. More...
 
Gcbank_tfGcbank
 QUEST common structure. More...
 
Gclink_tfGclink
 GCBANK common structure. More...
 
Gccuts_tfGccuts
 GCLINK common structure. More...
 
Gcmore_tfGcmore
 GCCUTS common structure. More...
 
Gcmulo_tfGcmulo
 GCMORE common structure. More...
 
Gcmate_tfGcmate
 GCMULO common structure. More...
 
Gctpol_tfGctpol
 GCMATE common structure. More...
 
Gcnum_tfGcnum
 GCTPOL common structure. More...
 
Gcsets_tfGcsets
 GCNUM common structure. More...
 
Gcopti_tfGcopti
 GCSETS common structure. More...
 
Gctlit_tfGctlit
 GCOPTI common structure. More...
 
Gcvdma_tfGcvdma
 GCTLIT common structure. More...
 
Gcvolu_tfGcvolu
 GCVDMA common structure. More...
 
Gckine_tfGckine
 GCVOLU common structure. More...
 
Gcflag_tfGcflag
 GCKINE common structure. More...
 
Gctmed_tfGctmed
 GCFLAG common structure. More...
 
Gcphys_tfGcphys
 GCTMED common structure. More...
 
Gcphlt_tfGcphlt
 GCPHYS common structure. More...
 
Gcking_tfGcking
 GCPHLT common structure. More...
 
Gckin2_tfGckin2
 GCKING common structure. More...
 
Gckin3_tfGckin3
 GCKIN2 common structure. More...
 
Gctrak_tfGctrak
 GCKIN3 common structure. More...
 
Gcchan_tfGcchan
 GCTRAK common structure. More...
 
Gconst_tfGconst
 GCCHAN common structure. More...
 
Gconsx_tfGconsx
 GCONST common structure. More...
 
Gcjump_tfGcjump
 GCONSX common structure. More...
 
char(* fVolNames )[5]
 GCJUMP common structure. More...
 
TObjArray fMedNames
 Names of geant volumes as C++ chars. More...
 
Int_t fNG3Particles
 Names of geant medias as TObjString. More...
 
Int_t fNPDGCodes
 
TArrayI fPDGCode
 
TGeoMCGeometry * fMCGeo
 
Bool_t fImportRootGeometry
 
Bool_t fStopRun
 
Bool_t fSkipNeutrinos
 

Private Member Functions

 TGeant3TGeo (const TGeant3TGeo &)
 GCVOLU common structure. More...
 
TGeant3TGeooperator= (const TGeant3TGeo &)
 
Int_t ImportMaterial (const TGeoMaterial *material)
 

Additional Inherited Members

- Public Attributes inherited from TGeant3
Ertrio_tfErtrio
 
Ertrio1_tfErtrio1
 ERTRIO common structure. More...
 
Eropts_tfEropts
 ERTRIO1 common structure. More...
 
Eroptc_tfEroptc
 EROPTS common structure. More...
 
Erwork_tfErwork
 EROPTC common structure. More...
 
Trcom3_tfTrcom3
 ERWORK common structure. More...
 
- Protected Types inherited from TGeant3
enum  {
  kTRIG = BIT(14), kSWIT = BIT(15), kDEBU = BIT(16), kAUTO = BIT(17),
  kABAN = BIT(18), kOPTI = BIT(19), kERAN = BIT(20)
}
 
- Protected Member Functions inherited from TGeant3
TMCProcess G3toVMC (Int_t iproc) const
 
void DefineParticles ()
 
Int_t TransportMethod (TMCParticleType particleType) const
 
TString ParticleClass (TMCParticleType particleType) const
 
TMCParticleType ParticleType (Int_t itrtyp) const
 
 TGeant3 (const TGeant3 &)
 
TGeant3operator= (const TGeant3 &)
 
Float_t * CreateFloatArray (Float_t *array, Int_t size) const
 
Float_t * CreateFloatArray (Double_t *array, Int_t size) const
 
Int_t NextKmat () const
 
void G3Material (Int_t &kmat, const char *name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t *buf=0, Int_t nwbuf=0)
 
void G3Mixture (Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
 
void G3Medium (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=0, Int_t nbuf=0)
 
Int_t G3Gsvolu (const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t np)
 
void G3Gsposp (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)
 
Int_t GetIonPdg (Int_t z, Int_t a, Int_t i=0) const
 
Int_t GetSpecialPdg (Int_t number) const
 

Detailed Description

Definition at line 33 of file TGeant3TGeo.h.

Constructor & Destructor Documentation

TGeant3TGeo::TGeant3TGeo ( )

Definition at line 540 of file TGeant3TGeo.cxx.

541  : TGeant3(),
542  fMCGeo(0)
543 {
544  //
545  // Default constructor
546 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
TGeant3TGeo::TGeant3TGeo ( const char *  title,
Int_t  nwgeant = 0 
)

Definition at line 549 of file TGeant3TGeo.cxx.

550  : TGeant3(title,nwgeant),
551  fImportRootGeometry(kFALSE)
552 {
553  //
554  // Standard constructor for TGeant3 with ZEBRA initialisation
555  //
556 
557  SetName("TGeant3TGeo");
558 
559  fMCGeo = new TGeoMCGeometry("MCGeo", "TGeo Implementation of VirtualMCGeometry");
560 
561  LoadAddress();
562  //set pointers to tracker functions
571 }
R__EXTERN void(* fginvol)(Float_t *, Int_t &)
R__EXTERN void(* fgtmany)(Int_t &)
type_of_call void gtonlyTGeo(Int_t &)
R__EXTERN void(* fggperp)(Float_t *, Float_t *, Int_t &)
type_of_call void ggperpTGeo(Float_t *, Float_t *, Int_t &)
Bool_t fImportRootGeometry
Definition: TGeant3TGeo.h:209
type_of_call void gmediaTGeo(Float_t *, Int_t &, Int_t &)
R__EXTERN void(* fgtmedi)(Float_t *, Int_t &)
R__EXTERN void(* fglvolu)(Int_t &nlev, Int_t *lnam, Int_t *lnum, Int_t &ier)
type_of_call void glvoluTGeo(Int_t &nlev, Int_t *lnam, Int_t *lnum, Int_t &ier)
virtual void LoadAddress()
type_of_call void gtmediTGeo(Float_t *, Int_t &)
R__EXTERN void(* fgtonly)(Int_t &)
R__EXTERN void(* fgtnext)()
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
R__EXTERN void(* fgmedia)(Float_t *, Int_t &, Int_t &)
type_of_call void gtnextTGeo()
type_of_call void ginvolTGeo(Float_t *, Int_t &)
type_of_call void gtmanyTGeo(Int_t &)
TGeant3TGeo::~TGeant3TGeo ( )
virtual

Definition at line 574 of file TGeant3TGeo.cxx.

575 {
576  delete fMCGeo;
577 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
TGeant3TGeo::TGeant3TGeo ( const TGeant3TGeo )
inlineprivate

GCVOLU common structure.

Definition at line 215 of file TGeant3TGeo.h.

215 : TGeant3() {}

Member Function Documentation

Int_t TGeant3TGeo::CurrentVolID ( Int_t &  copy) const

Definition at line 623 of file TGeant3TGeo.cxx.

624 {
625  //
626  // Returns the current volume ID and copy number
627  //
628  if (gGeoManager->IsOutside()) return 0;
629  TGeoNode *node = gGeoManager->GetCurrentNode();
630  copy = node->GetNumber();
631  Int_t id = node->GetVolume()->GetNumber();
632  return id;
633 }
T copy(T const &v)
const char * TGeant3TGeo::CurrentVolName ( ) const

Definition at line 651 of file TGeant3TGeo.cxx.

652 {
653  //
654  // Returns the current volume name
655  //
656  if (gGeoManager->IsOutside()) return gGeoManager->GetTopVolume()->GetName();
657  return gGeoManager->GetCurrentVolume()->GetName();
658 }
Int_t TGeant3TGeo::CurrentVolOffID ( Int_t  off,
Int_t &  copy 
) const

Definition at line 636 of file TGeant3TGeo.cxx.

637 {
638  //
639  // Return the current volume "off" upward in the geometrical tree
640  // ID and copy number
641  //
642  if (off<0 || off>gGeoManager->GetLevel()) return 0;
643  if (off==0) return CurrentVolID(copy);
644  TGeoNode *node = gGeoManager->GetMother(off);
645  if (!node) return 0;
646  copy = node->GetNumber();
647  return node->GetVolume()->GetNumber();
648 }
Int_t CurrentVolID(Int_t &copy) const
T copy(T const &v)
const char * TGeant3TGeo::CurrentVolOffName ( Int_t  off) const

Definition at line 661 of file TGeant3TGeo.cxx.

662 {
663  //
664  // Return the current volume "off" upward in the geometrical tree
665  // ID, name and copy number
666  // if name=0 no name is returned
667  //
668  Int_t i;
669  if( (i=fGcvolu->nlevel-off-1) < 0 ) {
670  Warning("CurrentVolOffName",
671  "Offset requested %d but stack depth %d\n",off,fGcvolu->nlevel);
672  return 0;
673  }
674  if (off<0 || off>gGeoManager->GetLevel()) return 0;
675  if (off==0) return CurrentVolName();
676  TGeoNode *node = gGeoManager->GetMother(off);
677  if (!node) return 0;
678  return node->GetVolume()->GetName();
679 }
Gcvolu_t * fGcvolu
GCVDMA common structure.
Definition: TGeant3.h:1157
Int_t nlevel
Definition: TGeant3.h:285
const char * CurrentVolName() const
const char * TGeant3TGeo::CurrentVolPath ( )

Definition at line 682 of file TGeant3TGeo.cxx.

683 {
684 // Return the path in geometry tree for the current volume
685 // ---
686 
687  return GetPath();
688 }
const char * GetPath()
void TGeant3TGeo::DrawOneSpec ( const char *  name)
virtual

Reimplemented from TGeant3.

Definition at line 1958 of file TGeant3TGeo.cxx.

1959 {
1960  //
1961  // Function called when one double-clicks on a volume name
1962  // in a TPavelabel drawn by Gdtree.
1963  //
1964  return;
1965 }
void TGeant3TGeo::FinishGeometry ( )
virtual

Reimplemented from TGeant3.

Definition at line 2029 of file TGeant3TGeo.cxx.

2030 {
2031  //
2032  // Finalise geometry construction
2033  //
2034 
2035  //Close the geometry structure
2036  if (gDebug > 0) printf("FinishGeometry, calling ggclos\n");
2037  Ggclos();
2038 
2039  if (fImportRootGeometry) {
2040 
2041  // Import materials
2042  //
2043  TIter next1(gGeoManager->GetListOfMaterials());
2044  TGeoMaterial* mat;
2045  Int_t nofMaterials = 0;
2046  while ((mat=(TGeoMaterial*)next1())) {
2047  Int_t kmat = ImportMaterial(mat);
2048  mat->SetUniqueID(kmat);
2049  nofMaterials++;
2050  }
2051 
2052  // Number of media
2053  Int_t nofMedia = 0;
2054  TIter next2(gGeoManager->GetListOfMedia());
2055  TGeoMedium* medx;
2056  while ((medx=(TGeoMedium*)next2())) nofMedia++;
2057 
2058  // Import media
2059  //
2060  Int_t maxNofMaterials = nofMaterials + nofMedia;
2061  TArrayI usedMaterials(maxNofMaterials);
2062  for (Int_t i=0; i<maxNofMaterials; i++)
2063  usedMaterials[i] = -1;
2064 
2065  TIter next3(gGeoManager->GetListOfMedia());
2066  TGeoMedium* med;
2067  while ((med=(TGeoMedium*)next3())) {
2068  Int_t kmed;
2069  Int_t nmat = med->GetMaterial()->GetUniqueID();
2070 
2071  // if material is already used define a new Geant3 material
2072  // (do not reset TGeoMaterial index)
2073  if (usedMaterials[nmat] >0 )
2074  nmat = ImportMaterial(med->GetMaterial());
2075  usedMaterials[nmat] = 1;
2076 
2077  Int_t isvol = (Int_t) med->GetParam(0);
2078  Int_t ifield = (Int_t) med->GetParam(1);
2079  Double_t fieldm = med->GetParam(2);
2080  Double_t tmaxfd = med->GetParam(3);
2081  Double_t stemax = med->GetParam(4);
2082  Double_t deemax = med->GetParam(5);
2083  Double_t epsil = med->GetParam(6);
2084  Double_t stmin = med->GetParam(7);
2085  G3Medium(kmed, med->GetName(), nmat, isvol, ifield, fieldm, tmaxfd,
2086  stemax,deemax, epsil, stmin);
2087  med->SetId(kmed);
2088  }
2089  if (gDebug > 0) printf("FinishGeometry, geometry retreived from file, materials/media mapped to G3\n");
2090  } else {
2091  TGeoVolume *top = (TGeoVolume*)gGeoManager->GetListOfVolumes()->First();
2092  gGeoManager->SetTopVolume(top);
2093  if (gDebug > 0) printf("FinishGeometry, calling CloseGeometry\n");
2094  gGeoManager->CloseGeometry();
2095  }
2096 
2097  if (gDebug > 0) printf("FinishGeometry, calling MisalignGeometry()\n");
2098  TVirtualMCApplication::Instance()->MisalignGeometry();
2099  // gROOT->GetListOfBrowsables()->Add(gGeoManager);
2100  if (gDebug > 0) printf("FinishGeometry, calling SetColors\n");
2101 
2102  //Create the color table
2103  SetColors();
2104  if (gDebug > 0) printf("FinishGeometry, returning\n");
2105 }
Bool_t fImportRootGeometry
Definition: TGeant3TGeo.h:209
void G3Medium(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=0, Int_t nbuf=0)
Definition: TGeant3.cxx:2810
virtual void Ggclos()
Int_t ImportMaterial(const TGeoMaterial *material)
virtual void SetColors()
virtual Gcvol1_t* TGeant3TGeo::Gcvol1 ( ) const
inlinevirtual

Definition at line 106 of file TGeant3TGeo.h.

106 {return fGcvol1;}
Gcvol1_t * fGcvol1
Definition: TGeant3TGeo.h:211
void TGeant3TGeo::Gdopt ( const char *  name,
const char *  value 
)
virtual

Reimplemented from TGeant3.

Definition at line 1820 of file TGeant3TGeo.cxx.

1821 {
1822  //
1823  // NAME Option name
1824  // VALUE Option value
1825  //
1826  // To set/modify the drawing options.
1827  // IOPT IVAL Action
1828  //
1829  // THRZ ON Draw tracks in R vs Z
1830  // OFF (D) Draw tracks in X,Y,Z
1831  // 180
1832  // 360
1833  // PROJ PARA (D) Parallel projection
1834  // PERS Perspective
1835  // TRAK LINE (D) Trajectory drawn with lines
1836  // POIN " " with markers
1837  // HIDE ON Hidden line removal using the CG package
1838  // OFF (D) No hidden line removal
1839  // SHAD ON Fill area and shading of surfaces.
1840  // OFF (D) Normal hidden line removal.
1841  // RAYT ON Ray-tracing on.
1842  // OFF (D) Ray-tracing off.
1843  // EDGE OFF Does not draw contours when shad is on.
1844  // ON (D) Normal shading.
1845  // MAPP 1,2,3,4 Mapping before ray-tracing.
1846  // 0 (D) No mapping.
1847  // USER ON User graphics options in the raytracing.
1848  // OFF (D) Automatic graphics options.
1849  //
1850  return;
1851 }
void TGeant3TGeo::Gdraw ( const char *  name,
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

Reimplemented from TGeant3.

Definition at line 1854 of file TGeant3TGeo.cxx.

1856 {
1857  //
1858  // NAME Volume name
1859  // +
1860  // THETA Viewing angle theta (for 3D projection)
1861  // PHI Viewing angle phi (for 3D projection)
1862  // PSI Viewing angle psi (for 2D rotation)
1863  // U0 U-coord. (horizontal) of volume origin
1864  // V0 V-coord. (vertical) of volume origin
1865  // SU Scale factor for U-coord.
1866  // SV Scale factor for V-coord.
1867  //
1868  // This function will draw the volumes,
1869  // selected with their graphical attributes, set by the Gsatt
1870  // facility. The drawing may be performed with hidden line removal
1871  // and with shading effects according to the value of the options HIDE
1872  // and SHAD; if the option SHAD is ON, the contour's edges can be
1873  // drawn or not. If the option HIDE is ON, the detector can be
1874  // exploded (BOMB), clipped with different shapes (CVOL), and some
1875  // of its parts can be shifted from their original
1876  // position (SHIFT). When HIDE is ON, if
1877  // the drawing requires more than the available memory, the program
1878  // will evaluate and display the number of missing words
1879  // (so that the user can increase the
1880  // size of its ZEBRA store). Finally, at the end of each drawing (with HIDE on),
1881  // the program will print messages about the memory used and
1882  // statistics on the volumes' visibility.
1883  // The following commands will produce the drawing of a green
1884  // volume, specified by NAME, without using the hidden line removal
1885  // technique, using the hidden line removal technique,
1886  // with different linewidth and colour (red), with
1887  // solid colour, with shading of surfaces, and without edges.
1888  // Finally, some examples are given for the ray-tracing. (A possible
1889  // string for the NAME of the volume can be found using the command DTREE).
1890  //
1891  return;
1892 }
void TGeant3TGeo::Gdrawc ( const char *  name,
Int_t  axis = 1,
Float_t  cut = 0,
Float_t  u0 = 10,
Float_t  v0 = 10,
Float_t  ul = 0.01,
Float_t  vl = 0.01 
)
virtual

Reimplemented from TGeant3.

Definition at line 1895 of file TGeant3TGeo.cxx.

1897 {
1898  //
1899  // NAME Volume name
1900  // CAXIS Axis value
1901  // CUTVAL Cut plane distance from the origin along the axis
1902  // +
1903  // U0 U-coord. (horizontal) of volume origin
1904  // V0 V-coord. (vertical) of volume origin
1905  // SU Scale factor for U-coord.
1906  // SV Scale factor for V-coord.
1907  //
1908  // The cut plane is normal to caxis (X,Y,Z), corresponding to iaxis (1,2,3),
1909  // and placed at the distance cutval from the origin.
1910  // The resulting picture is seen from the the same axis.
1911  // When HIDE Mode is ON, it is possible to get the same effect with
1912  // the CVOL/BOX function.
1913  //
1914  return;
1915 }
void TGeant3TGeo::Gdrawx ( const char *  name,
Float_t  cutthe,
Float_t  cutphi,
Float_t  cutval,
Float_t  theta = 30,
Float_t  phi = 30,
Float_t  u0 = 10,
Float_t  v0 = 10,
Float_t  ul = 0.01,
Float_t  vl = 0.01 
)
virtual

Reimplemented from TGeant3.

Definition at line 1918 of file TGeant3TGeo.cxx.

1921 {
1922  //
1923  // NAME Volume name
1924  // CUTTHE Theta angle of the line normal to cut plane
1925  // CUTPHI Phi angle of the line normal to cut plane
1926  // CUTVAL Cut plane distance from the origin along the axis
1927  // +
1928  // THETA Viewing angle theta (for 3D projection)
1929  // PHI Viewing angle phi (for 3D projection)
1930  // U0 U-coord. (horizontal) of volume origin
1931  // V0 V-coord. (vertical) of volume origin
1932  // SU Scale factor for U-coord.
1933  // SV Scale factor for V-coord.
1934  //
1935  // The cut plane is normal to the line given by the cut angles
1936  // cutthe and cutphi and placed at the distance cutval from the origin.
1937  // The resulting picture is seen from the viewing angles theta,phi.
1938  //
1939  return;
1940 }
void TGeant3TGeo::Gdshow ( Int_t  view)
virtual

Reimplemented from TGeant3.

Definition at line 1809 of file TGeant3TGeo.cxx.

1810 {
1811  //
1812  // IVIEW View number
1813  //
1814  // It shows on the screen the contents of a view bank. It
1815  // can be called after a view bank has been closed.
1816  //
1817 }
void TGeant3TGeo::Gdspec ( const char *  name)
virtual

Reimplemented from TGeant3.

Definition at line 1943 of file TGeant3TGeo.cxx.

1944 {
1945  //
1946  // NAME Volume name
1947  //
1948  // Shows 3 views of the volume (two cut-views and a 3D view), together with
1949  // its geometrical specifications. The 3D drawing will
1950  // be performed according the current values of the options HIDE and
1951  // SHAD and according the current SetClipBox clipping parameters for that
1952  // volume.
1953  //
1954  return;
1955 }
void TGeant3TGeo::Gdtom ( Float_t *  xd,
Float_t *  xm,
Int_t  iflag 
)
virtual

Reimplemented from TGeant3.

Definition at line 1301 of file TGeant3TGeo.cxx.

1302 {
1303  //
1304  // Computes coordinates XM (Master Reference System
1305  // knowing the coordinates XD (Detector Ref System)
1306  // The local reference system can be initialized by
1307  // - the tracking routines and GDTOM used in GUSTEP
1308  // - a call to GSCMED(NLEVEL,NAMES,NUMBER)
1309  // (inverse routine is GMTOD)
1310  //
1311  // If IFLAG=1 convert coordinates
1312  // IFLAG=2 convert direction cosinus
1313  //
1314  Double_t XM[3], XD[3];
1315  Int_t i;
1316  for (i=0;i<3;i++) XD[i] = xd[i];
1317  if (iflag == 1) gGeoManager->LocalToMaster(XD,XM);
1318  else gGeoManager->LocalToMasterVect(XD,XM);
1319  for (i=0;i<3;i++) xm[i]=XM[i];
1320 }
void TGeant3TGeo::Gdtom ( Double_t *  xd,
Double_t *  xm,
Int_t  iflag 
)
virtual

Reimplemented from TGeant3.

Definition at line 1323 of file TGeant3TGeo.cxx.

1324 {
1325  //
1326  // Computes coordinates XM (Master Reference System
1327  // knowing the coordinates XD (Detector Ref System)
1328  // The local reference system can be initialized by
1329  // - the tracking routines and GDTOM used in GUSTEP
1330  // - a call to GSCMED(NLEVEL,NAMES,NUMBER)
1331  // (inverse routine is GMTOD)
1332  //
1333  // If IFLAG=1 convert coordinates
1334  // IFLAG=2 convert direction cosinus
1335  //
1336 
1337  if (iflag == 1) gGeoManager->LocalToMaster(xd,xm);
1338  else gGeoManager->LocalToMasterVect(xd,xm);
1339 }
void TGeant3TGeo::Gdtree ( const char *  name,
Int_t  levmax = 15,
Int_t  ispec = 0 
)
virtual

Reimplemented from TGeant3.

Definition at line 1968 of file TGeant3TGeo.cxx.

1969 {
1970  //
1971  // NAME Volume name
1972  // LEVMAX Depth level
1973  // ISELT Options
1974  //
1975  // This function draws the logical tree,
1976  // Each volume in the tree is represented by a TPaveTree object.
1977  // Double-clicking on a TPaveTree draws the specs of the corresponding volume.
1978  // Use TPaveTree pop-up menu to select:
1979  // - drawing specs
1980  // - drawing tree
1981  // - drawing tree of parent
1982  //
1983  return;
1984 }
void TGeant3TGeo::GdtreeParent ( const char *  name,
Int_t  levmax = 15,
Int_t  ispec = 0 
)
virtual

Reimplemented from TGeant3.

Definition at line 1987 of file TGeant3TGeo.cxx.

1988 {
1989  //
1990  // NAME Volume name
1991  // LEVMAX Depth level
1992  // ISELT Options
1993  //
1994  // This function draws the logical tree of the parent of name.
1995  //
1996 }
void TGeant3TGeo::GeomIter ( )

Definition at line 593 of file TGeant3TGeo.cxx.

594 {
595  //
596  // Geometry iterator for moving upward in the geometry tree
597  // Initialise the iterator
598  //
599  fNextVol=gGeoManager->GetLevel();
600 }
Int_t fNextVol
Definition: TGeant3.h:1137
Bool_t TGeant3TGeo::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 
)
virtual

Definition at line 1033 of file TGeant3TGeo.cxx.

1037 {
1038  // Returns the Material and its parameters for the volume specified
1039  // by volumeName.
1040  // Note, Geant3 stores and uses mixtures as an element with an effective
1041  // Z and A. Consequently, if the parameter Z is not integer, then
1042  // this material represents some sort of mixture.
1043  // Inputs:
1044  // TString& volumeName The volume name
1045  // Outputs:
1046  // TSrting &name Material name
1047  // Int_t &imat Material index number
1048  // Double_t &a Average Atomic mass of material
1049  // Double_t &z Average Atomic number of material
1050  // Double_t &dens Density of material [g/cm^3]
1051  // Double_t &radl Average radiation length of material [cm]
1052  // Double_t &inter Average interaction length of material [cm]
1053  // TArrayD &par A TArrayD of user defined parameters.
1054  // Return:
1055  // kTRUE if no errors
1056  Int_t i,jma,nbuf;
1057  Float_t af,zf,densf,radlf,interf;
1058  Float_t *ubuf;
1059  Char_t namec[20] = {20*'\0'};
1060  TGeoVolume *vol = gGeoManager->GetVolume(volumeName.Data());
1061  if (!vol) return kFALSE;
1062  TGeoMedium *med = vol->GetMedium();
1063  if (!med) return kFALSE;
1064  TGeoMaterial *mat = med->GetMaterial();
1065  imat = mat->GetUniqueID();
1066 
1067  nbuf = jma = Lq()[Gclink()->jmate-imat];
1068  ubuf = new Float_t[nbuf];
1069  Gfmate(imat,namec,af,zf,densf,radlf,interf,ubuf,nbuf);
1070  name = mat->GetName();
1071  name = name.Strip(TString::kTrailing, '$');
1072  //
1073  par.Set(nbuf);
1074  for(i=0;i<nbuf;i++) par.AddAt(((Double_t)ubuf[i]),i);
1075  delete[] ubuf;
1076  a = mat->GetA();
1077  z = mat->GetZ();
1078  dens = mat->GetDensity();
1079  radl = radlf;
1080  inter = interf;
1081  return kTRUE;
1082 }
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)
Definition: TGeant3.cxx:3227
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
virtual Int_t * Lq() const
Definition: TGeant3.h:831
virtual Gclink_t * Gclink() const
Definition: TGeant3.h:809
Bool_t TGeant3TGeo::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 
)
virtual

Definition at line 1085 of file TGeant3TGeo.cxx.

1090 {
1091  // Returns the Medium and its parameters for the volume specified
1092  // by volumeName.
1093  // Inputs:
1094  // TString& volumeName The volume name.
1095  // Outputs:
1096  // TString &name Medium name
1097  // Int_t &nmat Material number defined for this medium
1098  // Int_t &imed The medium index number
1099  // Int_t &isvol volume number defined for this medium
1100  // Int_t &iflield Magnetic field flag
1101  // Double_t &fieldm Magnetic field strength
1102  // Double_t &tmaxfd Maximum angle of deflection per step
1103  // Double_t &stemax Maximum step size
1104  // Double_t &deemax Maximum fraction of energy allowed to be lost
1105  // to continuous process.
1106  // Double_t &epsil Boundary crossing precision
1107  // Double_t &stmin Minimum step size allowed
1108  // TArrayD &par A TArrayD of user parameters with all of the
1109  // parameters of the specified medium.
1110  // Return:
1111  // kTRUE if there where no errors
1112  Int_t i,nbuf;
1113  Float_t fieldmf,tmaxfdf,stemaxf,deemaxf,epsilf,stminf;
1114  Float_t *buf;
1115  Char_t namec[25] = {25*'\0'};
1116  TGeoVolume *vol = gGeoManager->GetVolume(volumeName.Data());
1117  if (!vol) return kFALSE;
1118  TGeoMedium *med = vol->GetMedium();
1119  if (!med) return kFALSE;
1120  imed = med->GetId();
1121  nbuf = Lq()[Gclink()->jtmed-imed];
1122  buf = new Float_t[nbuf];
1123  Gftmed(imed,namec,nmat,isvol,ifield,fieldmf,tmaxfdf,stemaxf,deemaxf,
1124  epsilf,stminf,buf,&nbuf);
1125  name = med->GetName();
1126  name = name.Strip(TString::kTrailing, '$');
1127  par.Set(nbuf);
1128  for(i=0;i<nbuf;i++) par.AddAt(((Double_t)buf[i]),i);
1129  delete[] buf;
1130  fieldm = (Double_t) fieldmf;
1131  tmaxfd = (Double_t) tmaxfdf;
1132  stemax = (Double_t) stemaxf;
1133  deemax = (Double_t) deemaxf;
1134  epsil = (Double_t) epsilf;
1135  stmin = (Double_t) stminf;
1136  return kTRUE;
1137 }
virtual void Gftmed(Int_t numed, char *name, Int_t &nmat, Int_t &isvol, Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd, Float_t &stemax, Float_t &deemax, Float_t &epsil, Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0)
Definition: TGeant3.cxx:3281
virtual Int_t * Lq() const
Definition: TGeant3.h:831
virtual Gclink_t * Gclink() const
Definition: TGeant3.h:809
Int_t TGeant3TGeo::GetMedium ( ) const
virtual

Reimplemented from TGeant3.

Definition at line 1140 of file TGeant3TGeo.cxx.

1141 {
1142 // Temporary added
1143 
1144  return TGeant3::GetMedium();
1145 }
virtual Int_t GetMedium() const
Definition: TGeant3.cxx:2967
const char * TGeant3TGeo::GetNodeName ( )

Definition at line 981 of file TGeant3TGeo.cxx.

982 {
983 // Get name of current G3 node
984  if (gGeoManager->IsOutside()) return "";
985  return gGeoManager->GetCurrentNode()->GetName();
986 }
const char * TGeant3TGeo::GetPath ( )

Definition at line 974 of file TGeant3TGeo.cxx.

975 {
976 // Get current path inside G3 geometry
977  return gGeoManager->GetPath();
978 }
Bool_t TGeant3TGeo::GetShape ( const TString &  volumePath,
TString &  shapeType,
TArrayD &  par 
)
virtual

Definition at line 1015 of file TGeant3TGeo.cxx.

1017 {
1018  // Returns the shape and its parameters for the volume specified
1019  // by volumeName.
1020  // Inputs:
1021  // TString& volumeName The volume name
1022  // Outputs:
1023  // TString &shapeType Shape type
1024  // TArrayD &par A TArrayD of parameters with all of the
1025  // parameters of the specified shape.
1026  // Return:
1027  // A logical indicating whether there was an error in getting this
1028  // information
1029  return fMCGeo->GetShape(volumePath, shapeType, par);
1030 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
Bool_t TGeant3TGeo::GetTransformation ( const TString &  volumePath,
TGeoHMatrix &  matrix 
)
virtual

Definition at line 989 of file TGeant3TGeo.cxx.

990 {
991  // Returns the Transformation matrix between the volume specified
992  // by the path volumePath and the Top or mater volume. The format
993  // of the path volumePath is as follows (assuming ALIC is the Top volume)
994  // "/ALIC_1/DDIP_1/S05I_2/S05H_1/S05G_3". Here ALIC is the top most
995  // or master volume which has only 1 instance of. Of all of the daughter
996  // volumes of ALICE, DDIP volume copy #1 is indicated. Similarly for
997  // the daughter volume of DDIP is S05I copy #2 and so on.
998  // Inputs:
999  // TString& volumePath The volume path to the specific volume
1000  // for which you want the matrix. Volume name
1001  // hierarchy is separated by "/" while the
1002  // copy number is appended using a "_".
1003  // Outputs:
1004  // TGeoHMatrix &mat A matrix with its values set to those
1005  // appropriate to the Local to Master transformation
1006  // Return:
1007  // A logical value if kFALSE then an error occurred and no change to
1008  // mat was made.
1009 
1010  // We have to preserve the modeler state
1011  return fMCGeo->GetTransformation(volumePath, mat);
1012 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Ggclos ( )
virtual

Reimplemented from TGeant3.

Definition at line 1154 of file TGeant3TGeo.cxx.

1155 {
1156  //
1157  // Closes off the geometry setting.
1158  // Initializes the search list for the contents of each
1159  // volume following the order they have been positioned, and
1160  // inserting the content '0' when a call to GSNEXT (-1) has
1161  // been required by the user.
1162  // Performs the development of the JVOLUM structure for all
1163  // volumes with variable parameters, by calling GGDVLP.
1164  // Interprets the user calls to GSORD, through GGORD.
1165  // Computes and stores in a bank (next to JVOLUM mother bank)
1166  // the number of levels in the geometrical tree and the
1167  // maximum number of contents per level, by calling GGNLEV.
1168  // Sets status bit for CONCAVE volumes, through GGCAVE.
1169  // Completes the JSET structure with the list of volume names
1170  // which identify uniquely a given physical detector, the
1171  // list of bit numbers to pack the corresponding volume copy
1172  // numbers, and the generic path(s) in the JVOLUM tree,
1173  // through the routine GHCLOS.
1174  //
1175  fVolNames = 0;
1176 }
char(* fVolNames)[5]
GCJUMP common structure.
Definition: TGeant3.h:1180
Int_t TGeant3TGeo::Glvolu ( Int_t  nlev,
Int_t *  lnam,
Int_t *  lnum 
)
virtual

Reimplemented from TGeant3.

Definition at line 1786 of file TGeant3TGeo.cxx.

1787 {
1788  //
1789  // nlev number of leveles deap into the volume tree
1790  // size of the arrays lnam and lnum
1791  // lnam an integer array whos 4 bytes contain the askii code for the
1792  // volume names
1793  // lnum an integer array containing the copy numbers for that specific
1794  // volume
1795  //
1796  // This routine fills the volulme paramters in common /gcvolu/ for a
1797  // physical tree, specified by the list lnam and lnum of volume names
1798  // and numbers, and for all its ascendants up to level 1. This routine
1799  // is optimsed and does not re-compute the part of the history already
1800  // available in GCVOLU. This means that if it is used in user programs
1801  // outside the usual framwork of the tracking, the user has to initilise
1802  // to zero NLEVEL in the common GCVOLU. It return 0 if there were no
1803  // problems in make the call.
1804  //
1805  return 0;
1806 }
void TGeant3TGeo::Gmedia ( Float_t *  x,
Int_t &  numed 
)
virtual

Reimplemented from TGeant3.

Definition at line 1342 of file TGeant3TGeo.cxx.

1343 {
1344  //
1345  // Finds in which volume/medium the point X is, and updates the
1346  // common /GCVOLU/ and the structure JGPAR accordingly.
1347  //
1348  // NUMED returns the tracking medium number, or 0 if point is
1349  // outside the experimental setup.
1350  //
1351 
1352  gCurrentNode = gGeoManager->FindNode(x[0],x[1],x[2]);
1353  if (gGeoManager->IsOutside()) {
1354  numed=0;
1355  } else {
1356  gcvolu->nlevel = 1 + gGeoManager->GetLevel();
1357  gGeoManager->GetBranchNames(gcvolu->names);
1358  gGeoManager->GetBranchNumbers(gcvolu->number,gcvolu->lvolum);
1359  TGeoVolume *vol = gCurrentNode->GetVolume();
1360  if (vol) {
1361  TGeoMedium *medium = vol->GetMedium();
1362  if (medium) numed = medium->GetId();
1363  } else {
1364  printf("ERROR: gmedia: NULL volume\n");
1365  }
1366  }
1367 }
Int_t number[15]
Definition: TGeant3.h:287
Int_t names[15]
Definition: TGeant3.h:286
TGeoNode * gCurrentNode
R__EXTERN Gcvolu_t * gcvolu
Int_t lvolum[15]
Definition: TGeant3.h:288
Int_t nlevel
Definition: TGeant3.h:285
list x
Definition: train.py:276
void TGeant3TGeo::Gmtod ( Float_t *  xm,
Float_t *  xd,
Int_t  iflag 
)
virtual

Reimplemented from TGeant3.

Definition at line 1370 of file TGeant3TGeo.cxx.

1371 {
1372  //
1373  // Computes coordinates XD (in DRS)
1374  // from known coordinates XM in MRS
1375  // The local reference system can be initialized by
1376  // - the tracking routines and GMTOD used in GUSTEP
1377  // - a call to GMEDIA(XM,NUMED,CHECK)
1378  // - a call to GLVOLU(NLEVEL,NAMES,NUMBER,IER)
1379  // (inverse routine is GDTOM)
1380  //
1381  // If IFLAG=1 convert coordinates
1382  // IFLAG=2 convert direction cosinus
1383  //
1384  Double_t XM[3], XD[3];
1385  Int_t i;
1386  for (i=0;i<3;i++) XM[i]=xm[i];
1387  if (iflag == 1) gGeoManager->MasterToLocal(XM,XD);
1388  else gGeoManager->MasterToLocalVect(XM,XD);
1389  for (i=0;i<3;i++) xd[i] = XD[i];
1390 }
void TGeant3TGeo::Gmtod ( Double_t *  xm,
Double_t *  xd,
Int_t  iflag 
)
virtual

Reimplemented from TGeant3.

Definition at line 1393 of file TGeant3TGeo.cxx.

1394 {
1395  //
1396  // Computes coordinates XD (in DRS)
1397  // from known coordinates XM in MRS
1398  // The local reference system can be initialized by
1399  // - the tracking routines and GMTOD used in GUSTEP
1400  // - a call to GMEDIA(XM,NUMED,CHECK)
1401  // - a call to GLVOLU(NLEVEL,NAMES,NUMBER,IER)
1402  // (inverse routine is GDTOM)
1403  //
1404  // If IFLAG=1 convert coordinates
1405  // IFLAG=2 convert direction cosinus
1406  //
1407 
1408 
1409  if (iflag == 1) gGeoManager->MasterToLocal(xm,xd);
1410  else gGeoManager->MasterToLocalVect(xm,xd);
1411 }
void TGeant3TGeo::Gprint ( const char *  name)
virtual

Reimplemented from TGeant3.

Definition at line 1179 of file TGeant3TGeo.cxx.

1180 {
1181  //
1182  // Routine to print data structures
1183  // CHNAME name of a data structure
1184  //
1185 }
void TGeant3TGeo::Gprotm ( Int_t  nmat = 0)
virtual

Reimplemented from TGeant3.

Definition at line 1587 of file TGeant3TGeo.cxx.

1588 {
1589  //
1590  // To print rotation matrices structure JROTM
1591  // nmat Rotation matrix number
1592  //
1593  TIter next(gGeoManager->GetListOfMatrices());
1594  TGeoMatrix *matrix;
1595  while ((matrix = (TGeoMatrix*)next())) {
1596  if (UInt_t(nmat) == matrix->GetUniqueID()) {
1597  matrix->Print();
1598  return;
1599  }
1600  }
1601  Error("Gprotm","Rotation with id=%i not found", nmat);
1602  }
void TGeant3TGeo::Gsatt ( const char *  name,
const char *  att,
Int_t  val 
)
virtual

Reimplemented from TGeant3.

Definition at line 1697 of file TGeant3TGeo.cxx.

1698 {
1699  //
1700  // NAME Volume name
1701  // IOPT Name of the attribute to be set
1702  // IVAL Value to which the attribute is to be set
1703  //
1704  // name= "*" stands for all the volumes.
1705  // iopt can be chosen among the following :
1706  //
1707  // WORK 0=volume name is inactive for the tracking
1708  // 1=volume name is active for the tracking (default)
1709  //
1710  // SEEN 0=volume name is invisible
1711  // 1=volume name is visible (default)
1712  // -1=volume invisible with all its descendants in the tree
1713  // -2=volume visible but not its descendants in the tree
1714  //
1715  // LSTY line style 1,2,3,... (default=1)
1716  // LSTY=7 will produce a very precise approximation for
1717  // revolution bodies.
1718  //
1719  // LWID line width -7,...,1,2,3,..7 (default=1)
1720  // LWID<0 will act as abs(LWID) was set for the volume
1721  // and for all the levels below it. When SHAD is 'ON', LWID
1722  // represent the linewidth of the scan lines filling the surfaces
1723  // (whereas the FILL value represent their number). Therefore
1724  // tuning this parameter will help to obtain the desired
1725  // quality/performance ratio.
1726  //
1727  // COLO colour code -166,...,1,2,..166 (default=1)
1728  // n=1=black
1729  // n=2=red; n=17+m, m=0,25, increasing luminosity according to 'm';
1730  // n=3=green; n=67+m, m=0,25, increasing luminosity according to 'm';
1731  // n=4=blue; n=117+m, m=0,25, increasing luminosity according to 'm';
1732  // n=5=yellow; n=42+m, m=0,25, increasing luminosity according to 'm';
1733  // n=6=violet; n=142+m, m=0,25, increasing luminosity according to 'm';
1734  // n=7=lightblue; n=92+m, m=0,25, increasing luminosity according to 'm';
1735  // colour=n*10+m, m=1,2,...9, will produce the same colour
1736  // as 'n', but with increasing luminosity according to 'm';
1737  // COLO<0 will act as if abs(COLO) was set for the volume
1738  // and for all the levels below it.
1739  // When for a volume the attribute FILL is > 1 (and the
1740  // option SHAD is on), the ABS of its colour code must be < 8
1741  // because an automatic shading of its faces will be
1742  // performed.
1743  //
1744  // FILL (1992) fill area -7,...,0,1,...7 (default=0)
1745  // when option SHAD is "on" the FILL attribute of any
1746  // volume can be set different from 0 (normal drawing);
1747  // if it is set to 1, the faces of such volume will be filled
1748  // with solid colours; if ABS(FILL) is > 1, then a light
1749  // source is placed along the observer line, and the faces of
1750  // such volumes will be painted by colours whose luminosity
1751  // will depend on the amount of light reflected;
1752  // if ABS(FILL) = 1, then it is possible to use all the 166
1753  // colours of the colour table, becouse the automatic shading
1754  // is not performed;
1755  // for increasing values of FILL the drawing will be performed
1756  // with higher and higher resolution improving the quality (the
1757  // number of scan lines used to fill the faces increases with FILL);
1758  // it is possible to set different values of FILL
1759  // for different volumes, in order to optimize at the same time
1760  // the performance and the quality of the picture;
1761  // FILL<0 will act as if abs(FILL) was set for the volume
1762  // and for all the levels below it.
1763  // This kind of drawing can be saved in 'picture files'
1764  // or in view banks.
1765  // 0=drawing without fill area
1766  // 1=faces filled with solid colours and resolution = 6
1767  // 2=lowest resolution (very fast)
1768  // 3=default resolution
1769  // 4=.................
1770  // 5=.................
1771  // 6=.................
1772  // 7=max resolution
1773  // Finally, if a coloured background is desired, the FILL
1774  // attribute for the first volume of the tree must be set
1775  // equal to -abs(colo), colo being >0 and <166.
1776  //
1777  // SET set number associated to volume name
1778  // DET detector number associated to volume name
1779  // DTYP detector type (1,2)
1780  //
1781 // InitHIGZ();
1782  gGeoManager->SetVolumeAttribute(name, att, val);
1783 }
void TGeant3TGeo::Gsdvn ( const char *  name,
const char *  mother,
Int_t  ndiv,
Int_t  iaxis 
)
virtual

Reimplemented from TGeant3.

Definition at line 1414 of file TGeant3TGeo.cxx.

1416 {
1417  //
1418  // Create a new volume by dividing an existing one
1419  //
1420  // NAME Volume name
1421  // MOTHER Mother volume name
1422  // NDIV Number of divisions
1423  // IAXIS Axis value
1424  //
1425  // X,Y,Z of CAXIS will be translated to 1,2,3 for IAXIS.
1426  // It divides a previously defined volume.
1427  //
1428  fMCGeo->Gsdvn(name, mother, ndiv, iaxis);
1429 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Gsdvn2 ( const char *  name,
const char *  mother,
Int_t  ndiv,
Int_t  iaxis,
Double_t  c0i,
Int_t  numed 
)
virtual

Reimplemented from TGeant3.

Definition at line 1432 of file TGeant3TGeo.cxx.

1434 {
1435  //
1436  // Create a new volume by dividing an existing one
1437  //
1438  // Divides mother into ndiv divisions called name
1439  // along axis iaxis starting at coordinate value c0.
1440  // the new volume created will be medium number numed.
1441  //
1442  fMCGeo->Gsdvn2(name, mother, ndiv, iaxis, c0i, numed);
1443 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Gsdvs ( const char *  name,
const char *  mother,
Float_t  step,
Int_t  iaxis,
Int_t  numed 
)
virtual

Reimplemented from TGeant3.

Definition at line 1446 of file TGeant3TGeo.cxx.

1448 {
1449  //
1450  // Create a new volume by dividing an existing one
1451  //
1452  gGeoManager->Division(name,mother,iaxis,0,0,step,numed,"s");
1453 }
void TGeant3TGeo::Gsdvs2 ( const char *  name,
const char *  mother,
Float_t  step,
Int_t  iaxis,
Float_t  c0,
Int_t  numed 
)
virtual

Reimplemented from TGeant3.

Definition at line 1456 of file TGeant3TGeo.cxx.

1458 {
1459  //
1460  // Create a new volume by dividing an existing one
1461  //
1462  gGeoManager->Division(name,mother,iaxis,0,c0,step,numed,"sx");
1463 }
void TGeant3TGeo::Gsdvt ( const char *  name,
const char *  mother,
Double_t  step,
Int_t  iaxis,
Int_t  numed,
Int_t  ndvmx 
)
virtual

Reimplemented from TGeant3.

Definition at line 1466 of file TGeant3TGeo.cxx.

1468 {
1469  //
1470  // Create a new volume by dividing an existing one
1471  //
1472  // Divides MOTHER into divisions called NAME along
1473  // axis IAXIS in steps of STEP. If not exactly divisible
1474  // will make as many as possible and will centre them
1475  // with respect to the mother. Divisions will have medium
1476  // number NUMED. If NUMED is 0, NUMED of MOTHER is taken.
1477  // NDVMX is the expected maximum number of divisions
1478  // (If 0, no protection tests are performed)
1479  //
1480  fMCGeo->Gsdvt(name, mother, step, iaxis, numed, ndvmx);
1481 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Gsdvt2 ( const char *  name,
const char *  mother,
Double_t  step,
Int_t  iaxis,
Double_t  c0,
Int_t  numed,
Int_t  ndvmx 
)
virtual

Reimplemented from TGeant3.

Definition at line 1484 of file TGeant3TGeo.cxx.

1486 {
1487  //
1488  // Create a new volume by dividing an existing one
1489  //
1490  // Divides MOTHER into divisions called NAME along
1491  // axis IAXIS starting at coordinate value C0 with step
1492  // size STEP.
1493  // The new volume created will have medium number NUMED.
1494  // If NUMED is 0, NUMED of mother is taken.
1495  // NDVMX is the expected maximum number of divisions
1496  // (If 0, no protection tests are performed)
1497  //
1498  fMCGeo->Gsdvt2(name, mother, step, iaxis, c0, numed, ndvmx);
1499 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Gsmate ( Int_t  imat,
const char *  name,
Float_t  a,
Float_t  z,
Float_t  dens,
Float_t  radl,
Float_t  absl 
)
virtual

Reimplemented from TGeant3.

Definition at line 1194 of file TGeant3TGeo.cxx.

1196 {
1197  //
1198  // Defines a Material
1199  //
1200  // kmat number assigned to the material
1201  // name material name
1202  // a atomic mass in au
1203  // z atomic number
1204  // dens density in g/cm3
1205  // absl absorbtion length in cm
1206  // if >=0 it is ignored and the program
1207  // calculates it, if <0. -absl is taken
1208  // radl radiation length in cm
1209  // if >=0 it is ignored and the program
1210  // calculates it, if <0. -radl is taken
1211  // buf pointer to an array of user words
1212  // nbuf number of user words
1213  //
1214  Float_t *ubuf=0;
1215  Int_t nbuf=0;
1216  if (dens <= 0 && a != 0 && z != 0) {
1217  Warning("Gsmate","Density was o, set to 0.01 for imat=%d, name=%s",imat,name);
1218  dens = 0.01;
1219  }
1220  g3smate(imat,PASSCHARD(name), a, z, dens, radl, absl, ubuf, nbuf
1221  PASSCHARL(name));
1222 
1223  gGeoManager->Material(name,a,z,dens,imat);
1224 }
#define PASSCHARL(string)
Definition: TCallf77.h:12
#define g3smate
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
#define PASSCHARD(string)
Definition: TCallf77.h:11
void TGeant3TGeo::Gsmixt ( Int_t  imat,
const char *  name,
Float_t *  a,
Float_t *  z,
Float_t  dens,
Int_t  nlmat,
Float_t *  wmat 
)
virtual

Reimplemented from TGeant3.

Definition at line 1227 of file TGeant3TGeo.cxx.

1229 {
1230  //
1231  // Defines mixture OR COMPOUND IMAT as composed by
1232  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
1233  //
1234  // If NLMAT.GT.0 then WMAT contains the PROPORTION BY
1235  // WEIGTHS OF EACH BASIC MATERIAL IN THE MIXTURE.
1236  //
1237  // If NLMAT.LT.0 then WMAT contains the number of atoms
1238  // of a given kind into the molecule of the COMPOUND
1239  // In this case, WMAT in output is changed to relative
1240  // weigths.
1241  //
1242  g3smixt(imat,PASSCHARD(name),a,z,dens,nlmat,wmat PASSCHARL(name));
1243  fMCGeo->Mixture(imat, name, a, z, dens, TMath::Abs(nlmat), wmat);
1244 }
#define PASSCHARL(string)
Definition: TCallf77.h:12
#define g3smixt
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
#define PASSCHARD(string)
Definition: TCallf77.h:11
void TGeant3TGeo::Gsord ( const char *  name,
Int_t  iax 
)
virtual

Reimplemented from TGeant3.

Definition at line 1502 of file TGeant3TGeo.cxx.

1503 {
1504  //
1505  // Flags volume CHNAME whose contents will have to be ordered
1506  // along axis IAX, by setting the search flag to -IAX
1507  // IAX = 1 X axis
1508  // IAX = 2 Y axis
1509  // IAX = 3 Z axis
1510  // IAX = 4 Rxy (static ordering only -> GTMEDI)
1511  // IAX = 14 Rxy (also dynamic ordering -> GTNEXT)
1512  // IAX = 5 Rxyz (static ordering only -> GTMEDI)
1513  // IAX = 15 Rxyz (also dynamic ordering -> GTNEXT)
1514  // IAX = 6 PHI (PHI=0 => X axis)
1515  // IAX = 7 THETA (THETA=0 => Z axis)
1516  //
1517 
1518 }
void TGeant3TGeo::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

Reimplemented from TGeant3.

Definition at line 1521 of file TGeant3TGeo.cxx.

1523 {
1524  //
1525  // Position a volume into an existing one
1526  //
1527  // NAME Volume name
1528  // NUMBER Copy number of the volume
1529  // MOTHER Mother volume name
1530  // X X coord. of the volume in mother ref. sys.
1531  // Y Y coord. of the volume in mother ref. sys.
1532  // Z Z coord. of the volume in mother ref. sys.
1533  // IROT Rotation matrix number w.r.t. mother ref. sys.
1534  // ONLY ONLY/MANY flag
1535  //
1536  // It positions a previously defined volume in the mother.
1537  //
1538  fMCGeo->Gspos(name, nr, mother, x, y, z, irot, konly);
1539 }
double y
double z
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
list x
Definition: train.py:276
void TGeant3TGeo::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

Reimplemented from TGeant3.

Definition at line 1542 of file TGeant3TGeo.cxx.

1545 {
1546  //
1547  // Place a copy of generic volume NAME with user number
1548  // NR inside MOTHER, with its parameters UPAR(1..NP)
1549  //
1550 
1551  fMCGeo->Gsposp(name, nr, mother, x, y, z, irot, konly, upar, np);
1552 }
double y
double z
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
list x
Definition: train.py:276
void TGeant3TGeo::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

Reimplemented from TGeant3.

Definition at line 1555 of file TGeant3TGeo.cxx.

1558 {
1559  //
1560  // Place a copy of generic volume NAME with user number
1561  // NR inside MOTHER, with its parameters UPAR(1..NP)
1562  //
1563 
1564  fMCGeo->Gsposp(name, nr, mother, x, y, z, irot, konly, upar, np);
1565 }
double y
double z
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
list x
Definition: train.py:276
void TGeant3TGeo::Gsrotm ( Int_t  nmat,
Float_t  theta1,
Float_t  phi1,
Float_t  theta2,
Float_t  phi2,
Float_t  theta3,
Float_t  phi3 
)
virtual

Reimplemented from TGeant3.

Definition at line 1568 of file TGeant3TGeo.cxx.

1570 {
1571  //
1572  // nmat Rotation matrix number
1573  // THETA1 Polar angle for axis I
1574  // PHI1 Azimuthal angle for axis I
1575  // THETA2 Polar angle for axis II
1576  // PHI2 Azimuthal angle for axis II
1577  // THETA3 Polar angle for axis III
1578  // PHI3 Azimuthal angle for axis III
1579  //
1580  // It defines the rotation matrix number IROT.
1581  //
1582 
1583  gGeoManager->Matrix(nmat, theta1, phi1, theta2, phi2, theta3, phi3);
1584 }
void TGeant3TGeo::Gstmed ( Int_t  numed,
const char *  name,
Int_t  nmat,
Int_t  isvol,
Int_t  ifield,
Float_t  fieldm,
Float_t  tmaxfd,
Float_t  stemax,
Float_t  deemax,
Float_t  epsil,
Float_t  stmin 
)
virtual

Reimplemented from TGeant3.

Definition at line 1247 of file TGeant3TGeo.cxx.

1251 {
1252  //
1253  // NTMED Tracking medium number
1254  // NAME Tracking medium name
1255  // NMAT Material number
1256  // ISVOL Sensitive volume flag
1257  // IFIELD Magnetic field
1258  // FIELDM Max. field value (Kilogauss)
1259  // TMAXFD Max. angle due to field (deg/step)
1260  // STEMAX Max. step allowed
1261  // DEEMAX Max. fraction of energy lost in a step
1262  // EPSIL Tracking precision (cm)
1263  // STMIN Min. step due to continuous processes (cm)
1264  //
1265  // IFIELD = 0 if no magnetic field; IFIELD = -1 if user decision in GUSWIM;
1266  // IFIELD = 1 if tracking performed with G3RKUTA; IFIELD = 2 if tracking
1267  // performed with G3HELIX; IFIELD = 3 if tracking performed with G3HELX3.
1268  //
1269  Float_t *ubuf=0;
1270  Int_t nbuf=0;
1271  g3stmed(numed,PASSCHARD(name), nmat, isvol, ifield, fieldm, tmaxfd, stemax,
1272  deemax, epsil, stmin, ubuf, nbuf PASSCHARL(name));
1273 
1274  gGeoManager->Medium(name,numed,nmat, isvol, ifield, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
1275 }
#define PASSCHARL(string)
Definition: TCallf77.h:12
#define g3stmed
#define PASSCHARD(string)
Definition: TCallf77.h:11
Int_t TGeant3TGeo::Gsvolu ( const char *  name,
const char *  shape,
Int_t  nmed,
Float_t *  upar,
Int_t  np 
)
virtual

Reimplemented from TGeant3.

Definition at line 1605 of file TGeant3TGeo.cxx.

1607 {
1608  //
1609  // NAME Volume name
1610  // SHAPE Volume type
1611  // NUMED Tracking medium number
1612  // NPAR Number of shape parameters
1613  // UPAR Vector containing shape parameters
1614  //
1615  // It creates a new volume in the JVOLUM data structure.
1616  //
1617 
1618  Int_t ivolu = 0;
1619  ivolu = fMCGeo->Gsvolu(name, shape, nmed, upar, npar);
1620  return ivolu;
1621 
1622 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
Int_t TGeant3TGeo::Gsvolu ( const char *  name,
const char *  shape,
Int_t  nmed,
Double_t *  upar,
Int_t  np 
)
virtual

Reimplemented from TGeant3.

Definition at line 1625 of file TGeant3TGeo.cxx.

1627 {
1628  //
1629  // NAME Volume name
1630  // SHAPE Volume type
1631  // NUMED Tracking medium number
1632  // NPAR Number of shape parameters
1633  // UPAR Vector containing shape parameters
1634  //
1635  // It creates a new volume in the JVOLUM data structure.
1636  //
1637 
1638 
1639  Int_t ivolu = 0;
1640  ivolu = fMCGeo->Gsvolu(name, shape, nmed, upar, npar);
1641  return ivolu;
1642 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Gtreve ( )
virtual

Reimplemented from TGeant3.

Definition at line 1277 of file TGeant3TGeo.cxx.

1278 {
1279  //
1280  // Controls tracking of all particles belonging to the current event
1281  //
1282  g3treve();
1283 }
#define g3treve
void TGeant3TGeo::GtreveRoot ( )
virtual

Reimplemented from TGeant3.

Definition at line 1286 of file TGeant3TGeo.cxx.

1287 {
1288  //
1289  // Controls tracking of all particles belonging to the current event
1290  //
1291  gtreveroot();
1292 }
#define gtreveroot
Int_t TGeant3TGeo::ImportMaterial ( const TGeoMaterial *  material)
private

Definition at line 1999 of file TGeant3TGeo.cxx.

2000 {
2001 // Imports the Root material in Geant3 and returns its Geant3 index
2002 // ---
2003 
2004  Int_t kmat;
2005  const TGeoMixture* mixt = dynamic_cast<const TGeoMixture*>(mat);
2006  if (mixt) {
2007  // TGeo stores only proportions by weigth
2008  Int_t nlmat = mixt->GetNelements();
2009  Float_t* fa = CreateFloatArray(mixt->GetAmixt(), TMath::Abs(nlmat));
2010  Float_t* fz = CreateFloatArray(mixt->GetZmixt(), TMath::Abs(nlmat));
2011  Float_t* fwmat = CreateFloatArray(mixt->GetWmixt(), TMath::Abs(nlmat));
2012  G3Mixture(kmat, mixt->GetName(), fa, fz, mixt->GetDensity(), TMath::Abs(nlmat), fwmat);
2013  delete [] fa;
2014  delete [] fz;
2015  delete [] fwmat;
2016  }
2017  else {
2018  Float_t* buf = 0;
2019  // Inject radlen with negative sign to be stored in G3
2020  Double_t radlen = mat->GetRadLen();
2021  // Ignore abslen from TGeo and let G3 compute it
2022  G3Material(kmat, mat->GetName(), mat->GetA(), mat->GetZ(),
2023  mat->GetDensity(), -radlen, 0, buf, 0);
2024  }
2025  return kmat;
2026 }
Float_t * CreateFloatArray(Float_t *array, Int_t size) const
Definition: TGeant3.cxx:6383
void G3Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
Definition: TGeant3.cxx:2713
void G3Material(Int_t &kmat, const char *name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t *buf=0, Int_t nwbuf=0)
Definition: TGeant3.cxx:2613
virtual Bool_t TGeant3TGeo::IsRootGeometrySupported ( ) const
inlinevirtual

Reimplemented from TGeant3.

Definition at line 40 of file TGeant3TGeo.h.

40 {return kTRUE;}
void TGeant3TGeo::LoadAddress ( )
virtual

Reimplemented from TGeant3.

Definition at line 580 of file TGeant3TGeo.cxx.

581 {
582  //
583  // Assigns the address of the GEANT common blocks to the structures
584  // that allow their access from C++
585  //
586 // printf("LoadAddress\n");
587 // TGeant3::LoadAddress();
588  gcomad(PASSCHARD("GCVOL1"),(int*&) fGcvol1 PASSCHARL("GCVOL1"));
589  gcvol1 = fGcvol1;
590 }
#define PASSCHARL(string)
Definition: TCallf77.h:12
Gcvol1_t * fGcvol1
Definition: TGeant3TGeo.h:211
#define gcomad
Gcvol1_t * gcvol1
#define PASSCHARD(string)
Definition: TCallf77.h:11
void TGeant3TGeo::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 = 0,
Int_t  nwbuf = 0 
)
virtual

Reimplemented from TGeant3.

Definition at line 763 of file TGeant3TGeo.cxx.

766 {
767  //
768  // Defines a Material
769  //
770  // kmat number assigned to the material
771  // name material name
772  // a atomic mass in au
773  // z atomic number
774  // dens density in g/cm3
775  // absl absorbtion length in cm
776  // if >=0 it is ignored and the program
777  // calculates it, if <0. -absl is taken
778  // radl radiation length in cm
779  // if >=0 it is ignored and the program
780  // calculates it, if <0. -radl is taken
781  // buf pointer to an array of user words
782  // nbuf number of user words
783  //
784 
785  Float_t* fbuf = CreateFloatArray(buf, nwbuf);
786  G3Material(kmat, name, a, z, dens, radl, absl, fbuf, nwbuf);
787  delete [] fbuf;
788 
789  fMCGeo->Material(kmat, name, a, z, dens, radl, absl, buf, nwbuf);
790 }
Float_t * CreateFloatArray(Float_t *array, Int_t size) const
Definition: TGeant3.cxx:6383
void G3Material(Int_t &kmat, const char *name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t *buf=0, Int_t nwbuf=0)
Definition: TGeant3.cxx:2613
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::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

Reimplemented from TGeant3.

Definition at line 793 of file TGeant3TGeo.cxx.

796 {
797  //
798  // Defines a Material
799  //
800  // kmat number assigned to the material
801  // name material name
802  // a atomic mass in au
803  // z atomic number
804  // dens density in g/cm3
805  // absl absorbtion length in cm
806  // if >=0 it is ignored and the program
807  // calculates it, if <0. -absl is taken
808  // radl radiation length in cm
809  // if >=0 it is ignored and the program
810  // calculates it, if <0. -radl is taken
811  // buf pointer to an array of user words
812  // nbuf number of user words
813  //
814 
815 
816  Float_t* fbuf = CreateFloatArray(buf, nwbuf);
817  G3Material(kmat, name, a, z, dens, radl, absl, fbuf, nwbuf);
818  delete [] fbuf;
819 
820  fMCGeo->Material(kmat, name, a, z, dens, radl, absl, buf, nwbuf);
821 }
Float_t * CreateFloatArray(Float_t *array, Int_t size) const
Definition: TGeant3.cxx:6383
void G3Material(Int_t &kmat, const char *name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t *buf=0, Int_t nwbuf=0)
Definition: TGeant3.cxx:2613
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Matrix ( Int_t &  krot,
Double_t  thex,
Double_t  phix,
Double_t  they,
Double_t  phiy,
Double_t  thez,
Double_t  phiz 
)
virtual

Reimplemented from TGeant3.

Definition at line 944 of file TGeant3TGeo.cxx.

946 {
947  //
948  // krot rotation matrix number assigned
949  // theta1 polar angle for axis i
950  // phi1 azimuthal angle for axis i
951  // theta2 polar angle for axis ii
952  // phi2 azimuthal angle for axis ii
953  // theta3 polar angle for axis iii
954  // phi3 azimuthal angle for axis iii
955  //
956  // it defines the rotation matrix number irot.
957  //
958  krot = -1;
959  fMCGeo->Matrix(krot, thex, phix, they, phiy, thez, phiz);
960 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::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 = 0,
Int_t  nbuf = 0 
)
virtual

Reimplemented from TGeant3.

Definition at line 880 of file TGeant3TGeo.cxx.

884 {
885  //
886  // kmed tracking medium number assigned
887  // name tracking medium name
888  // nmat material number
889  // isvol sensitive volume flag
890  // ifield magnetic field
891  // fieldm max. field value (kilogauss)
892  // tmaxfd max. angle due to field (deg/step)
893  // stemax max. step allowed
894  // deemax max. fraction of energy lost in a step
895  // epsil tracking precision (cm)
896  // stmin min. step due to continuous processes (cm)
897  //
898  // ifield = 0 if no magnetic field; ifield = -1 if user decision in guswim;
899  // ifield = 1 if tracking performed with g3rkuta; ifield = 2 if tracking
900  // performed with g3helix; ifield = 3 if tracking performed with g3helx3.
901  //
902 
903  G3Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
904  stmin, ubuf, nbuf);
905 
906  fMCGeo->Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax,
907  epsil, stmin, ubuf, nbuf);
908 }
void G3Medium(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=0, Int_t nbuf=0)
Definition: TGeant3.cxx:2810
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::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

Reimplemented from TGeant3.

Definition at line 911 of file TGeant3TGeo.cxx.

915 {
916  //
917  // kmed tracking medium number assigned
918  // name tracking medium name
919  // nmat material number
920  // isvol sensitive volume flag
921  // ifield magnetic field
922  // fieldm max. field value (kilogauss)
923  // tmaxfd max. angle due to field (deg/step)
924  // stemax max. step allowed
925  // deemax max. fraction of energy lost in a step
926  // epsil tracking precision (cm)
927  // stmin min. step due to continuos processes (cm)
928  //
929  // ifield = 0 if no magnetic field; ifield = -1 if user decision in guswim;
930  // ifield = 1 if tracking performed with g3rkuta; ifield = 2 if tracking
931  // performed with g3helix; ifield = 3 if tracking performed with g3helx3.
932  //
933 
934  Float_t* fubuf = CreateFloatArray(ubuf, nbuf);
935  G3Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
936  stmin, fubuf, nbuf);
937  delete [] fubuf;
938 
939  fMCGeo->Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax,
940  epsil, stmin, ubuf, nbuf);
941 }
Float_t * CreateFloatArray(Float_t *array, Int_t size) const
Definition: TGeant3.cxx:6383
void G3Medium(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=0, Int_t nbuf=0)
Definition: TGeant3.cxx:2810
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Mixture ( Int_t &  kmat,
const char *  name,
Float_t *  a,
Float_t *  z,
Double_t  dens,
Int_t  nlmat,
Float_t *  wmat 
)
virtual

Reimplemented from TGeant3.

Definition at line 824 of file TGeant3TGeo.cxx.

826 {
827  //
828  // Defines mixture OR COMPOUND IMAT as composed by
829  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
830  //
831  // If NLMAT > 0 then wmat contains the proportion by
832  // weights of each basic material in the mixture.
833  //
834  // If nlmat < 0 then WMAT contains the number of atoms
835  // of a given kind into the molecule of the COMPOUND
836  // In this case, WMAT in output is changed to relative
837  // weigths.
838  //
839 
840  G3Mixture(kmat, name, a, z, dens, nlmat, wmat);
841 
842  fMCGeo->Mixture(kmat, name, a, z, dens, TMath::Abs(nlmat), wmat);
843 }
void G3Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
Definition: TGeant3.cxx:2713
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
void TGeant3TGeo::Mixture ( Int_t &  kmat,
const char *  name,
Double_t *  a,
Double_t *  z,
Double_t  dens,
Int_t  nlmat,
Double_t *  wmat 
)
virtual

Reimplemented from TGeant3.

Definition at line 846 of file TGeant3TGeo.cxx.

848 {
849  //
850  // Defines mixture OR COMPOUND IMAT as composed by
851  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
852  //
853  // If NLMAT > 0 then wmat contains the proportion by
854  // weights of each basic material in the mixture.
855  //
856  // If nlmat < 0 then WMAT contains the number of atoms
857  // of a given kind into the molecule of the COMPOUND
858  // In this case, WMAT in output is changed to relative
859  // weigths.
860  //
861 
862  Float_t* fa = CreateFloatArray(a, TMath::Abs(nlmat));
863  Float_t* fz = CreateFloatArray(z, TMath::Abs(nlmat));
864  Float_t* fwmat = CreateFloatArray(wmat, TMath::Abs(nlmat));
865 
866  G3Mixture(kmat, name, fa, fz, dens, nlmat, fwmat);
867  Int_t i;
868  for (i=0; i<TMath::Abs(nlmat); i++) {
869  a[i] = fa[i]; z[i] = fz[i]; wmat[i] = fwmat[i];
870  }
871 
872  delete [] fa;
873  delete [] fz;
874  delete [] fwmat;
875 
876  fMCGeo->Mixture(kmat, name, a, z, dens, TMath::Abs(nlmat), wmat);
877 }
Float_t * CreateFloatArray(Float_t *array, Int_t size) const
Definition: TGeant3.cxx:6383
void G3Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
Definition: TGeant3.cxx:2713
double z
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
Int_t TGeant3TGeo::NextVolUp ( Text_t *  name,
Int_t &  copy 
)

Definition at line 603 of file TGeant3TGeo.cxx.

604 {
605  //
606  // Geometry iterator for moving upward in the geometry tree
607  // Return next volume up
608  //
609  fNextVol--;
610  if (fNextVol>=0) {
611  Int_t level = gGeoManager->GetLevel();
612  if (level<=fNextVol) return 0;
613  TGeoNode *mother = gGeoManager->GetMother(level-fNextVol);
614  if (!mother) return 0;
615  sprintf(name, "%s", mother->GetVolume()->GetName());
616  copy = mother->GetNumber();
617  return mother->GetVolume()->GetNumber();
618  }
619  return 0;
620 }
Int_t fNextVol
Definition: TGeant3.h:1137
T copy(T const &v)
Int_t TGeant3TGeo::NofVolDaughters ( const char *  volName) const

Definition at line 714 of file TGeant3TGeo.cxx.

715 {
716 // Return number of daughters of the volume specified by volName
717 // According to A. Morsch' G3toRoot class
718 // ---
719 
720  return fMCGeo->NofVolDaughters(volName);
721 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
Int_t TGeant3TGeo::NofVolumes ( ) const

Definition at line 705 of file TGeant3TGeo.cxx.

706 {
707  //
708  // Return total number of volumes in the geometry
709  //
710  return fMCGeo->NofVolumes();
711 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
TGeant3TGeo& TGeant3TGeo::operator= ( const TGeant3TGeo )
inlineprivate

Definition at line 216 of file TGeant3TGeo.h.

216 {return *this;}
void TGeant3TGeo::SetColors ( )
virtual

Reimplemented from TGeant3.

Definition at line 2108 of file TGeant3TGeo.cxx.

2109 {
2110  //
2111  // Set the colors for all the volumes
2112  // this is done sequentially for all volumes
2113  // based on the number of their medium
2114  //
2115  TIter next(gGeoManager->GetListOfVolumes());
2116  TGeoVolume *volume;
2117  while ((volume = (TGeoVolume*)next())) {
2118  if (volume->IsAssembly()) continue;
2119  TGeoMedium *medium = (TGeoMedium*)volume->GetMedium();
2120  Int_t icol = medium->GetId()%6+2;
2121  volume->SetLineColor(icol);
2122  }
2123 }
static const std::string volume[nvol]
void TGeant3TGeo::SetRootGeometry ( )
virtual

Reimplemented from TGeant3.

Definition at line 963 of file TGeant3TGeo.cxx.

964 {
965 // Notify Geant3 about use of TGeo geometry.
966 // The materials and tracking medias will be imported from
967 // TGeo at FinishGeometry().
968 
969 
970  fImportRootGeometry = kTRUE;
971 }
Bool_t fImportRootGeometry
Definition: TGeant3TGeo.h:209
Int_t TGeant3TGeo::VolDaughterCopyNo ( const char *  volName,
Int_t  i 
) const

Definition at line 735 of file TGeant3TGeo.cxx.

736 {
737 // Return the copyNo of i-th daughters of the volume specified by volName
738 // According to A. Morsch' G3toRoot class
739 // ---
740 
741  return fMCGeo->VolDaughterCopyNo(volName, i);
742 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
const char * TGeant3TGeo::VolDaughterName ( const char *  volName,
Int_t  i 
) const

Definition at line 724 of file TGeant3TGeo.cxx.

725 {
726 // Return the name of i-th daughters of the volume specified by volName
727 // According to A. Morsch' G3toRoot class
728 // ---
729 
730  return fMCGeo->VolDaughterName(volName, i);
731 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
Int_t TGeant3TGeo::VolId ( const Text_t *  name) const

Definition at line 691 of file TGeant3TGeo.cxx.

692 {
693  //
694  // Return the unique numeric identifier for volume name
695  //
696  char sname[20];
697  Int_t len = strlen(name)-1;
698  if (name[len] != ' ') return fMCGeo->VolId(name);
699  strncpy(sname, name, len);
700  sname[len] = 0;
701  return fMCGeo->VolId(sname);
702 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
Int_t TGeant3TGeo::VolId2Mate ( Int_t  id) const

Definition at line 745 of file TGeant3TGeo.cxx.

746 {
747  //
748  // Return material number for a given volume id
749  //
750  return fMCGeo->VolId2Mate(id);
751 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208
const char * TGeant3TGeo::VolName ( Int_t  id) const

Definition at line 754 of file TGeant3TGeo.cxx.

755 {
756  //
757  // Return the volume name given the volume identifier
758  //
759  return fMCGeo->VolName(id);
760 }
TGeoMCGeometry * fMCGeo
Definition: TGeant3TGeo.h:208

Member Data Documentation

Gcvol1_t* TGeant3TGeo::fGcvol1
protected

Definition at line 211 of file TGeant3TGeo.h.

Bool_t TGeant3TGeo::fImportRootGeometry
protected

Definition at line 209 of file TGeant3TGeo.h.

TGeoMCGeometry* TGeant3TGeo::fMCGeo
protected

Definition at line 208 of file TGeant3TGeo.h.


The documentation for this class was generated from the following files: