389 #include "TParticle.h" 390 #include "TDatabasePDG.h" 391 #include "TLorentzVector.h" 397 #include "TGeoManager.h" 398 #include "TGeoMatrix.h" 399 #include "TGeoMCGeometry.h" 402 #include "TVirtualMCDecayer.h" 403 #include "TPDGCode.h" 406 # define g3smate g3smate_ 407 # define g3smixt g3smixt_ 408 # define g3stmed g3stmed_ 409 # define g3treve g3treve_ 410 # define gtreveroot gtreveroot_ 411 # define gcomad gcomad_ 413 # define g3brelm g3brelm_ 414 # define g3prelm g3prelm_ 418 # define gzebra GZEBRA 419 # define grfile GRFILE 420 # define gpcxyz GPCXYZ 421 # define ggclos GGCLOS 423 # define g3cinit G3CINIT 426 # define gtrigc GTRIGC 427 # define gtrigi GTRIGI 429 # define gfmate GFMATE 430 # define gfpart GFPART 431 # define gftmed GFTMED 432 # define gftmat GFTMAT 433 # define gsmate GSMATE 434 # define gsmixt GSMIXT 435 # define gstmed GSTMED 436 # define gstpar GSTPAR 437 # define gfkine GFKINE 438 # define gfvert GFVERT 439 # define gskine GSKINE 440 # define gsvert GSVERT 441 # define gphysi GPHYSI 442 # define gekbin GEKBIN 443 # define gfinds GFINDS 444 # define gsking GSKING 445 # define gskpho GSKPHO 446 # define gsstak GSSTAK 447 # define gtreve GTREVE 448 # define gtreveroot GTREVEROOT 450 # define gmedia GMEDIA 453 # define gsdvn2 GSDVN2 455 # define gsdvs2 GSDVS2 457 # define gsdvt2 GSDVT2 460 # define gsposp GSPOSP 461 # define gsrotm GSROTM 462 # define gprotm GPROTM 463 # define gsvolu GSVOLU 464 # define gprint GPRINT 465 # define gcomad GCOMAD 481 Float_t &, Float_t &, Float_t &, Float_t *,
485 const Float_t *,
const Float_t &,
const Int_t &,
489 Float_t &, Float_t &, Float_t &, Float_t &,
490 Float_t &, Float_t &, Float_t *, Int_t & DEFCHARL);
497 # define gtreveroot gtreveroot_ 500 # define gtreveroot GTREVEROOT 533 R__EXTERN void (*
fgmedia)(Float_t*, Int_t&, Int_t&);
534 R__EXTERN void (*
fglvolu)(Int_t &nlev, Int_t *lnam,Int_t *lnum, Int_t &ier);
536 R__EXTERN void (*
fggperp)(Float_t*, Float_t*, Int_t&);
557 SetName(
"TGeant3TGeo");
559 fMCGeo =
new TGeoMCGeometry(
"MCGeo",
"TGeo Implementation of VirtualMCGeometry");
611 Int_t
level = gGeoManager->GetLevel();
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();
628 if (gGeoManager->IsOutside())
return 0;
629 TGeoNode *node = gGeoManager->GetCurrentNode();
630 copy = node->GetNumber();
631 Int_t
id = node->GetVolume()->GetNumber();
642 if (off<0 || off>gGeoManager->GetLevel())
return 0;
644 TGeoNode *node = gGeoManager->GetMother(off);
646 copy = node->GetNumber();
647 return node->GetVolume()->GetNumber();
656 if (gGeoManager->IsOutside())
return gGeoManager->GetTopVolume()->GetName();
657 return gGeoManager->GetCurrentVolume()->GetName();
670 Warning(
"CurrentVolOffName",
671 "Offset requested %d but stack depth %d\n",off,
fGcvolu->
nlevel);
674 if (off<0 || off>gGeoManager->GetLevel())
return 0;
676 TGeoNode *node = gGeoManager->GetMother(off);
678 return node->GetVolume()->GetName();
697 Int_t len = strlen(name)-1;
698 if (name[len] !=
' ')
return fMCGeo->VolId(name);
699 strncpy(sname, name, len);
701 return fMCGeo->VolId(sname);
710 return fMCGeo->NofVolumes();
720 return fMCGeo->NofVolDaughters(volName);
730 return fMCGeo->VolDaughterName(volName, i);
741 return fMCGeo->VolDaughterCopyNo(volName, i);
750 return fMCGeo->VolId2Mate(
id);
759 return fMCGeo->VolName(
id);
764 Double_t dens, Double_t radl, Double_t absl, Float_t* buf,
786 G3Material(kmat, name, a, z, dens, radl, absl, fbuf, nwbuf);
789 fMCGeo->Material(kmat, name, a, z, dens, radl, absl, buf, nwbuf);
794 Double_t dens, Double_t radl, Double_t absl, Double_t* buf,
817 G3Material(kmat, name, a, z, dens, radl, absl, fbuf, nwbuf);
820 fMCGeo->Material(kmat, name, a, z, dens, radl, absl, buf, nwbuf);
825 Double_t dens, Int_t nlmat, Float_t* wmat)
840 G3Mixture(kmat, name, a, z, dens, nlmat, wmat);
842 fMCGeo->Mixture(kmat, name, a, z, dens, TMath::Abs(nlmat), wmat);
847 Double_t dens, Int_t nlmat, Double_t* wmat)
866 G3Mixture(kmat, name, fa, fz, dens, nlmat, fwmat);
868 for (i=0; i<TMath::Abs(nlmat); i++) {
869 a[
i] = fa[
i]; z[
i] = fz[
i]; wmat[
i] = fwmat[
i];
876 fMCGeo->Mixture(kmat, name, a, z, dens, TMath::Abs(nlmat), wmat);
881 Int_t ifield, Double_t fieldm, Double_t tmaxfd,
882 Double_t stemax, Double_t deemax, Double_t epsil,
883 Double_t stmin, Float_t* ubuf, Int_t nbuf)
903 G3Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
906 fMCGeo->Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax,
907 epsil, stmin, ubuf, nbuf);
912 Int_t ifield, Double_t fieldm, Double_t tmaxfd,
913 Double_t stemax, Double_t deemax, Double_t epsil,
914 Double_t stmin, Double_t* ubuf, Int_t nbuf)
935 G3Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
939 fMCGeo->Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax,
940 epsil, stmin, ubuf, nbuf);
945 Double_t phiy, Double_t thez, Double_t phiz)
959 fMCGeo->Matrix(krot, thex, phix, they, phiy, thez, phiz);
977 return gGeoManager->GetPath();
984 if (gGeoManager->IsOutside())
return "";
985 return gGeoManager->GetCurrentNode()->GetName();
1011 return fMCGeo->GetTransformation(volumePath, mat);
1029 return fMCGeo->GetShape(volumePath, shapeType, par);
1034 TString &
name,Int_t &imat,
1035 Double_t &
a,Double_t &
z,Double_t &dens,
1036 Double_t &radl,Double_t &inter,TArrayD &par)
1057 Float_t af,zf,densf,radlf,interf;
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();
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,
'$');
1074 for(i=0;i<nbuf;i++) par.AddAt(((Double_t)ubuf[i]),i);
1078 dens = mat->GetDensity();
1086 Int_t &imed,Int_t &nmat,Int_t &isvol,Int_t &ifield,
1087 Double_t &fieldm,Double_t &tmaxfd,Double_t &stemax,
1088 Double_t &deemax,Double_t &epsil, Double_t &stmin,
1113 Float_t fieldmf,tmaxfdf,stemaxf,deemaxf,epsilf,stminf;
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();
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,
'$');
1128 for(i=0;i<nbuf;i++) par.AddAt(((Double_t)buf[i]),i);
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;
1195 Float_t dens, Float_t radl, Float_t absl)
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);
1223 gGeoManager->Material(name,a,z,dens,imat);
1228 Float_t dens, Int_t nlmat, Float_t *wmat)
1243 fMCGeo->Mixture(imat, name, a, z, dens, TMath::Abs(nlmat), wmat);
1248 Int_t ifield, Float_t fieldm, Float_t tmaxfd,
1249 Float_t stemax, Float_t deemax, Float_t epsil,
1271 g3stmed(numed,
PASSCHARD(name), nmat, isvol, ifield, fieldm, tmaxfd, stemax,
1272 deemax, epsil, stmin, ubuf, nbuf
PASSCHARL(name));
1274 gGeoManager->Medium(name,numed,nmat, isvol, ifield, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
1314 Double_t XM[3], XD[3];
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];
1337 if (iflag == 1) gGeoManager->LocalToMaster(xd,xm);
1338 else gGeoManager->LocalToMasterVect(xd,xm);
1353 if (gGeoManager->IsOutside()) {
1361 TGeoMedium *medium = vol->GetMedium();
1362 if (medium) numed = medium->GetId();
1364 printf(
"ERROR: gmedia: NULL volume\n");
1384 Double_t XM[3], XD[3];
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];
1409 if (iflag == 1) gGeoManager->MasterToLocal(xm,xd);
1410 else gGeoManager->MasterToLocalVect(xm,xd);
1428 fMCGeo->Gsdvn(name, mother, ndiv, iaxis);
1433 Int_t iaxis, Double_t c0i, Int_t numed)
1442 fMCGeo->Gsdvn2(name, mother, ndiv, iaxis, c0i, numed);
1447 Int_t iaxis, Int_t numed)
1452 gGeoManager->Division(name,mother,iaxis,0,0,step,numed,
"s");
1457 Int_t iaxis, Float_t c0, Int_t numed)
1462 gGeoManager->Division(name,mother,iaxis,0,c0,step,numed,
"sx");
1467 Int_t iaxis, Int_t numed, Int_t ndvmx)
1480 fMCGeo->Gsdvt(name, mother, step, iaxis, numed, ndvmx);
1485 Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx)
1498 fMCGeo->Gsdvt2(name, mother, step, iaxis, c0, numed, ndvmx);
1522 Double_t
y, Double_t
z, Int_t irot,
const char *konly)
1538 fMCGeo->Gspos(name, nr, mother, x, y, z, irot, konly);
1543 Double_t
x, Double_t
y, Double_t
z, Int_t irot,
1544 const char *konly, Float_t *upar, Int_t np )
1551 fMCGeo->Gsposp(name, nr, mother, x, y, z, irot, konly, upar, np);
1556 Double_t
x, Double_t
y, Double_t
z, Int_t irot,
1557 const char *konly, Double_t *upar, Int_t np )
1564 fMCGeo->Gsposp(name, nr, mother, x, y, z, irot, konly, upar, np);
1569 Float_t phi2, Float_t theta3, Float_t phi3)
1583 gGeoManager->Matrix(nmat, theta1, phi1, theta2, phi2, theta3, phi3);
1593 TIter next(gGeoManager->GetListOfMatrices());
1595 while ((matrix = (TGeoMatrix*)next())) {
1596 if (UInt_t(nmat) == matrix->GetUniqueID()) {
1601 Error(
"Gprotm",
"Rotation with id=%i not found", nmat);
1606 Float_t *upar, Int_t npar)
1619 ivolu =
fMCGeo->Gsvolu(name, shape, nmed, upar, npar);
1626 Double_t *upar, Int_t npar)
1640 ivolu =
fMCGeo->Gsvolu(name, shape, nmed, upar, npar);
1782 gGeoManager->SetVolumeAttribute(name, att, val);
1855 Double_t ,Double_t ,Double_t ,Double_t )
1896 Float_t ,Float_t ,Float_t )
1919 Float_t , Float_t , Float_t , Float_t ,
1920 Float_t ,Float_t ,Float_t )
2005 const TGeoMixture* mixt =
dynamic_cast<const TGeoMixture*
>(mat);
2008 Int_t nlmat = mixt->GetNelements();
2012 G3Mixture(kmat, mixt->GetName(), fa, fz, mixt->GetDensity(), TMath::Abs(nlmat), fwmat);
2020 Double_t radlen = mat->GetRadLen();
2022 G3Material(kmat, mat->GetName(), mat->GetA(), mat->GetZ(),
2023 mat->GetDensity(), -radlen, 0, buf, 0);
2036 if (gDebug > 0) printf(
"FinishGeometry, calling ggclos\n");
2043 TIter next1(gGeoManager->GetListOfMaterials());
2045 Int_t nofMaterials = 0;
2046 while ((mat=(TGeoMaterial*)next1())) {
2048 mat->SetUniqueID(kmat);
2054 TIter next2(gGeoManager->GetListOfMedia());
2056 while ((medx=(TGeoMedium*)next2())) nofMedia++;
2060 Int_t maxNofMaterials = nofMaterials + nofMedia;
2061 TArrayI usedMaterials(maxNofMaterials);
2062 for (Int_t
i=0;
i<maxNofMaterials;
i++)
2063 usedMaterials[
i] = -1;
2065 TIter next3(gGeoManager->GetListOfMedia());
2067 while ((med=(TGeoMedium*)next3())) {
2069 Int_t nmat = med->GetMaterial()->GetUniqueID();
2073 if (usedMaterials[nmat] >0 )
2075 usedMaterials[nmat] = 1;
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);
2089 if (gDebug > 0) printf(
"FinishGeometry, geometry retreived from file, materials/media mapped to G3\n");
2091 TGeoVolume *top = (TGeoVolume*)gGeoManager->GetListOfVolumes()->First();
2092 gGeoManager->SetTopVolume(top);
2093 if (gDebug > 0) printf(
"FinishGeometry, calling CloseGeometry\n");
2094 gGeoManager->CloseGeometry();
2097 if (gDebug > 0) printf(
"FinishGeometry, calling MisalignGeometry()\n");
2098 TVirtualMCApplication::Instance()->MisalignGeometry();
2100 if (gDebug > 0) printf(
"FinishGeometry, calling SetColors\n");
2104 if (gDebug > 0) printf(
"FinishGeometry, returning\n");
2115 TIter next(gGeoManager->GetListOfVolumes());
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);
2135 if (gGeoManager->IsSameLocation(x[0], x[1], x[2])) isame = 1;
2146 if (gGeoManager->IsOutside()) {
2154 TGeoMedium *medium = vol->GetMedium();
2155 if (medium) numed = medium->GetId();
2157 printf(
"ERROR: gtmedi: NULL volume\n");
2167 if (gGeoManager->IsOutside()) {
2175 TGeoMedium *medium = vol->GetMedium();
2176 if (medium) numed = medium->GetId();
2178 printf(
"ERROR: gmedia: NULL volume\n");
2209 void glvoluTGeo(Int_t &nlev, Int_t *lnam,Int_t *lnum, Int_t &ier)
2228 TGeoVolume *vol = gGeoManager->GetTopVolume();
2229 TGeoVolume *vdaughter = 0;
2232 Bool_t
found = kFALSE;
2234 gGeoManager->CdTop();
2235 if (nlev<1) nlev = 1;
2237 if (nlev==1)
return;
2238 Int_t *lvol = gcvol1->
lvolu1;
2244 for (Int_t
i=1;
i<nlev;
i++) {
2245 nd = vol->GetNdaughters();
2247 for (Int_t
id=0;
id<nd;
id++) {
2248 node = vol->GetNode(
id);
2249 vdaughter = node->GetVolume();
2250 if (vdaughter->GetNumber() == lvol[
i]) {
2251 if (node->GetNumber()==lnum[
i]) {
2253 gGeoManager->CdDown(
id);
2260 printf(
"### ERROR in TGeant3TGeo::glvoluTGeo(): cannot restore path\n");
2274 gGeoManager->SetCurrentPoint(x[0],x[1],x[2]);
2275 gGeoManager->SetCurrentDirection(x[3],x[4],x[5]);
2284 if (itrtyp==7) gGeoManager->FindNextBoundary(-step);
2285 else gGeoManager->FindNextBoundary(step);
2287 Double_t snext = gGeoManager->GetStep();
2310 Double_t *dblnorm = gGeoManager->FindNormalFast();
2315 norm[0] = -dblnorm[0];
2316 norm[1] = -dblnorm[1];
2317 norm[2] = -dblnorm[2];
#define PASSCHARL(string)
virtual void Gsdvt(const char *name, const char *mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)
R__EXTERN void(* fginvol)(Float_t *, Int_t &)
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 Int_t GetMedium() const
R__EXTERN void(* fgtmany)(Int_t &)
Gcvolu_t * fGcvolu
GCVDMA common structure.
virtual void Gdshow(Int_t view)
Float_t * CreateFloatArray(Float_t *array, Int_t size) const
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 Gmedia(Float_t *x, Int_t &numed)
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)
R__EXTERN TGeant3 * geant3
virtual void Gdspec(const char *name)
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)
Int_t NextVolUp(Text_t *name, Int_t ©)
static const std::string volume[nvol]
Int_t CurrentVolID(Int_t ©) const
virtual void FinishGeometry()
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 Gprint(const char *name)
const char * GetNodeName()
R__EXTERN Int_t count_ginvol
char(* fVolNames)[5]
GCJUMP common structure.
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 Gsdvs2(const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, Int_t numed)
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)
void G3Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
type_of_call void gtonlyTGeo(Int_t &)
virtual void Gsrotm(Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3, Float_t phi3)
R__EXTERN void(* fggperp)(Float_t *, Float_t *, Int_t &)
const char * VolName(Int_t id) const
type_of_call void ggperpTGeo(Float_t *, Float_t *, Int_t &)
Bool_t fImportRootGeometry
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)
type_of_call void gmediaTGeo(Float_t *, Int_t &, Int_t &)
R__EXTERN void(* fgtmedi)(Float_t *, Int_t &)
virtual void Gsatt(const char *name, const char *att, Int_t val)
virtual void Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
Int_t NofVolDaughters(const char *volName) const
R__EXTERN Gcvolu_t * gcvolu
R__EXTERN Int_t count_gmedia
virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag)
virtual void Gsord(const char *name, Int_t iax)
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 Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)
virtual Int_t GetMedium() const
virtual void LoadAddress()
Int_t VolId(const Text_t *name) const
const char * CurrentVolPath()
type_of_call void gtmediTGeo(Float_t *, Int_t &)
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)
const char * CurrentVolOffName(Int_t off) const
auto norm(Vector const &v)
Return norm of the specified vector.
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 Gprotm(Int_t nmat=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, Float_t *buf=0, Int_t nwbuf=0)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
R__EXTERN void(* fgtonly)(Int_t &)
R__EXTERN void(* fgtnext)()
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)
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)
R__EXTERN Gctrak_t * gctrak
virtual void GtreveRoot()
virtual void Gdtree(const char *name, Int_t levmax=15, Int_t ispec=0)
Int_t CurrentVolOffID(Int_t off, Int_t ©) const
const char * VolDaughterName(const char *volName, Int_t i) const
virtual Int_t * Lq() const
R__EXTERN Int_t count_gtmedi
virtual void Gsdvs(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed)
Int_t VolDaughterCopyNo(const char *volName, Int_t i) const
R__EXTERN Int_t count_gtnext
virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag)
virtual void Gsmate(Int_t imat, const char *name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl)
R__EXTERN Gcchan_t * gcchan
Int_t VolId2Mate(Int_t id) const
R__EXTERN void(* fgmedia)(Float_t *, Int_t &, Int_t &)
type_of_call void gtnextTGeo()
virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t np)
type_of_call void ginvolTGeo(Float_t *, Int_t &)
const char * CurrentVolName() const
virtual void Gdopt(const char *name, const char *value)
R__EXTERN Gckine_t * gckine
Int_t ImportMaterial(const TGeoMaterial *material)
virtual Int_t Glvolu(Int_t nlev, Int_t *lnam, Int_t *lnum)
virtual Bool_t GetShape(const TString &volumePath, TString &shapeType, TArrayD &par)
virtual void SetRootGeometry()
virtual Bool_t GetTransformation(const TString &volumePath, TGeoHMatrix &matrix)
virtual void DrawOneSpec(const char *name)
virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis)
virtual Gclink_t * Gclink() const
#define PASSCHARD(string)
type_of_call void gtmanyTGeo(Int_t &)
virtual void GdtreeParent(const char *name, Int_t levmax=15, Int_t ispec=0)
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 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 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)