50 Bool_t g3CompatibleVolumeNames)
52 fG3CompatibleVolumeNames(g3CompatibleVolumeNames)
63 fG3CompatibleVolumeNames(
kFALSE)
102 for (
Int_t i=0; i<size; i++) doubleArray[i] = array[i];
121 for (i=0;i<
l;i++) vname[i] = toupper(name[i]);
122 for (i=l;i<4;i++) vname[i] =
' ';
127 for (
Int_t i=0;i<
l;i++) vname[i] = name[i];
159 Material(kmat, name, a, z, dens, radl, absl, dbuf, nwbuf);
209 Mixture(kmat, name, da, dz, dens, nlmat, dwmat);
210 for (
Int_t i=0; i<nlmat; i++) {
211 a[i] = da[i]; z[i] = dz[i]; wmat[i] = dwmat[i];
240 for (i=0;i<nlmat;i++) {
241 amol += a[i]*wmat[i];
243 for (i=0;i<nlmat;i++) {
244 wmat[i] *= a[i]/amol;
280 Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
313 GetTGeoManager()->
Medium(name,kmed,nmat, isvol, ifield, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
374 Fatal(
"Gsvolu",
"Could not create volume %s", name);
397 Vname(mother,vmother);
416 Vname(mother,vmother);
438 Vname(mother,vmother);
461 Vname(mother,vmother);
512 Vname(mother,vmother);
528 Gsposp(name, nr, mother, x, y, z, irot, konly, dupar, np);
548 Vname(mother,vmother);
561 printf(
"VolId: Volume %s not found\n",name);
574 if (medium)
return medium->
GetId();
576 printf(
"MediumId: Medium %s not found\n",name);
588 Error(
"VolName",
"volume with id=%d does not exist",
id);
612 Error(
"NofVolDaughters",
"Volume %s not found.", volName);
628 Error(
"VolDaughterName",
"Volume %s not found.", volName);
634 Error(
"VolDaughterName",
"Volume %s Index out of limits", volName);
651 Error(
"VolDaughterName",
"Volume %s not found.", volName);
657 Error(
"VolDaughterName",
"Volume %s Index out of limits", volName);
673 Error(
"VolId2Mate",
"volume with id=%d does not exist",
id);
740 TClass *class_type = shape->IsA();
880 for (
Int_t i=0; i<nz; i++) {
881 par.
AddAt(z[i], 4+3*i);
882 par.
AddAt(rmin[i], 4+3*i+1);
883 par.
AddAt(rmax[i], 4+3*i+2);
899 for (
Int_t i=0; i<nz; i++) {
900 par.
AddAt(z[i], 3+3*i);
901 par.
AddAt(rmin[i], 3+3*i+1);
902 par.
AddAt(rmax[i], 3+3*i+2);
969 Error(
"GetShape",
"Getting shape parameters for shape %s not implemented", shape->
ClassName());
1052 imed = med->
GetId();
Double_t GetStOut() const
virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Double_t c0i, Int_t numed)
Create a new volume by dividing an existing one.
virtual ~TGeoMCGeometry()
Destructor.
void para(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
virtual Int_t MediumId(const char *mediumName) const
Return the unique numeric identifier for medium name.
virtual void Gsdvt2(const char *name, const char *mother, Double_t step, Int_t iaxis, Double_t c0, Int_t numed, Int_t ndvmx)
Create a new volume by dividing an existing one.
virtual Double_t GetRmin1() const
virtual Bool_t GetShape(const TString &volumePath, TString &shapeType, TArrayD &par)
Returns the shape and its parameters for the volume specified by volumeName.
TGeoVolume * GetVolume() const
virtual Double_t GetRmax2() const
TGeoMaterial * Mixture(const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nelem, Float_t *wmat, Int_t uid)
Create mixture OR COMPOUND IMAT as composed by THE BASIC nelem materials defined by arrays A...
void Vname(const char *name, char *vname) const
Convert name to upper case.
virtual void Medium(Int_t &kmed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin, Float_t *ubuf, Int_t nbuf)
Define a medium.
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)
Position a volume into an existing one.
TGeoHMatrix * GetCurrentMatrix() const
TGeoVolume * Volume(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t npar=0)
Create a volume in GEANT3 style.
void ToLower()
Change string to lower-case.
Interface to Monte Carlo geometry construction.
void trap(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
virtual Double_t GetDY() const
Int_t GetEntriesFast() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
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)
Returns the Medium and its parameters for the volume specified by volumeName.
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)
Returns the Material and its parameters for the volume specified by volumeName.
virtual Double_t GetDZ() const
Int_t GetNdaughters() const
virtual Int_t NofVolDaughters(const char *volName) const
Return number of daughters of the volume specified by volName According to A.
virtual Double_t GetRmax1() const
Int_t PushPath(Int_t startlevel=0)
const char * Data() const
virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis)
Create a new volume by dividing an existing one.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual Int_t NofVolumes() const
Return total number of volumes in the geometry.
virtual void Material(Int_t &kmat, const char *name, Double_t a, Double_t z, Double_t dens, Double_t radl, Double_t absl, Float_t *buf, Int_t nwbuf)
Define a material.
virtual Double_t GetA() const
virtual Double_t GetRmax() const
Implementation of the TVirtualMCGeometry interface for building TGeo geometry.
virtual Int_t VolId2Mate(Int_t id) const
Return material number for a given volume id.
Double_t GetTwistAngle() const
virtual const char * VolName(Int_t id) const
Return the volume name given the volume identifier.
virtual Int_t VolDaughterCopyNo(const char *volName, Int_t i) const
Return the copyNo of i-th daughters of the volume specified by volName According to A...
virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed, Float_t *upar, Int_t np)
Create a new volume.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Double_t GetParam(Int_t i) const
const Double_t * GetNlow() const
Int_t GetUID(const char *volname) const
Retreive unique id for a volume name. Return -1 if name not found.
virtual Double_t GetA() const
TGeoManager * GetTGeoManager() const
Return TGeoManager global pointer.
Double_t GetAlpha2() const
virtual Double_t GetIntLen() const
void eltu(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
virtual void Gsord(const char *name, Int_t iax)
Flag volume name whose contents will have to be ordered along axis iax, by setting the search flag to...
virtual Double_t GetDX() const
void pcon(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
void Matrix(Int_t index, Double_t theta1, Double_t phi1, Double_t theta2, Double_t phi2, Double_t theta3, Double_t phi3)
Create rotation matrix named 'mat<index>'.
virtual Double_t GetRmin2() const
TGeoMedium * Medium(const char *name, Int_t numed, 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)
Create tracking medium.
TPaveLabel title(3, 27.1, 15, 28.7,"ROOT Environment and Tools")
void tube(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
virtual const char * ClassName() const
Returns name of class to which the object belongs.
void ctub(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
virtual Double_t GetRmin() const
Double_t GetTheta2() const
void pgon(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
virtual const char * GetName() const
Returns name of object.
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)
Place a copy of generic volume name with user number nr inside mother, with its parameters upar(1...
TSubString Strip(EStripType s=kTrailing, char c= ' ') const
Return a substring of self stripped at beginning and/or end.
TGeoMedium * GetMedium(const char *medium) const
Search for a named tracking medium. All trailing blanks stripped.
The ROOT global object gROOT contains a list of all defined classes.
virtual Double_t GetDz() const
void cone(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
TGeoVolume * Division(const char *name, const char *mother, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
Create a new volume by dividing an existing one (GEANT3 like)
TGeoNode * GetNode(const char *name) const
get the pointer to a daughter node
const Double_t * GetNhigh() const
TObjArray * GetListOfMatrices() const
virtual Double_t GetRmin() const
TGeoMaterial * GetMaterial() const
virtual void Gsdvt(const char *name, const char *mother, Double_t step, Int_t iaxis, Int_t numed, Int_t ndvmx)
Create a new volume by dividing an existing one.
TGeoMaterial * Material(const char *name, Double_t a, Double_t z, Double_t dens, Int_t uid, Double_t radlen=0, Double_t intlen=0)
Create material with given A, Z and density, having an unique id.
virtual Bool_t GetTransformation(const TString &volumePath, TGeoHMatrix &matrix)
Return the transformation matrix between the volume specified by the path volumePath and the Top or m...
void trd2(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
Double_t * GetRmin() const
TGeoShape * GetShape() const
R__EXTERN TGeoManager * gGeoManager
TGeoVolume * GetVolume(const char *name) const
Search for a named volume. All trailing blanks stripped.
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
Double_t GetTheta1() const
TGeoVolume * GetCurrentVolume() const
Double_t * CreateDoubleArray(Float_t *array, Int_t size) const
Convert Float_t* array to Double_t*, !! The new array has to be deleted by user.
void trd1(Int_t iaxis=0, Int_t ndiv=8, Double_t start=0, Double_t step=0)
static TGeoMCGeometry * fgInstance
Singleton instance.
Array of doubles (64 bits per element).
virtual UInt_t GetUniqueID() const
Return the unique object id.
Double_t GetTheta() const
virtual Double_t GetZ() const
virtual Double_t GetRadLen() const
void Node(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot, Bool_t isOnly, Float_t *upar, Int_t npar=0)
Create a node called <name_nr> pointing to the volume called <name> as daughter of the volume called ...
Double_t * GetRmax() const
void AddAt(Double_t c, Int_t i)
Add double c at position i. Check for out of bounds.
virtual Double_t GetDensity() const
TGeoMedium * GetMedium() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TGeoMCGeometry()
Default constructor.
Double_t GetAlpha1() const
virtual void Mixture(Int_t &kmat, const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nlmat, Float_t *wmat)
Define a mixture or a compound with a number kmat composed by the basic nlmat materials defined by ar...
virtual Double_t GetDz() const
TObjArray * GetListOfUVolumes() const
virtual const char * VolDaughterName(const char *volName, Int_t i) const
Return the name of i-th daughters of the volume specified by volName According to A...
Double_t Sqrt(Double_t x)
Bool_t fG3CompatibleVolumeNames
Option to convert volumes names to be compatible with G3.
void Set(Int_t n)
Set size of this array to n doubles.
virtual void Matrix(Int_t &krot, Double_t thetaX, Double_t phiX, Double_t thetaY, Double_t phiY, Double_t thetaZ, Double_t phiZ)
Define a rotation matrix.
const char * cd(char *path=0)
Double_t RadiusHypeSq(Double_t z, Bool_t inner) const
Compute r^2 = x^2 + y^2 at a given z coordinate, for either inner or outer hyperbolas.
virtual Double_t GetRmax() const
virtual Int_t VolId(const char *volName) const
Return the unique numeric identifier for volume name.
virtual Double_t GetB() const