50 Bool_t g3CompatibleVolumeNames)
52 fG3CompatibleVolumeNames(g3CompatibleVolumeNames)
63 fG3CompatibleVolumeNames(
kFALSE)
103 for (
Int_t i=0; i<size; i++) doubleArray[i] = array[i];
122 for (i=0;i<
l;i++) vname[i] = toupper(name[i]);
123 for (i=l;i<4;i++) vname[i] =
' ';
128 for (
Int_t i=0;i<
l;i++) vname[i] = name[i];
161 Material(kmat, name, a, z, dens, radl, absl, dbuf, nwbuf);
212 Mixture(kmat, name, da, dz, dens, nlmat, dwmat);
213 for (
Int_t i=0; i<nlmat; i++) {
214 a[i] = da[i]; z[i] = dz[i]; wmat[i] = dwmat[i];
243 for (i=0;i<nlmat;i++) {
244 amol += a[i]*wmat[i];
246 for (i=0;i<nlmat;i++) {
247 wmat[i] *= a[i]/amol;
279 Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
308 GetTGeoManager()->
Medium(name,kmed,nmat, isvol, ifield, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
372 Fatal(
"Gsvolu",
"Could not create volume %s", name);
397 Vname(mother,vmother);
417 Vname(mother,vmother);
440 Vname(mother,vmother);
464 Vname(mother,vmother);
516 Vname(mother,vmother);
533 Gsposp(name, nr, mother, x, y, z, irot, konly, dupar, np);
554 Vname(mother,vmother);
568 printf(
"VolId: Volume %s not found\n",name);
582 if (medium)
return medium->
GetId();
584 printf(
"MediumId: Medium %s not found\n",name);
597 Error(
"VolName",
"volume with id=%d does not exist",
id);
623 Error(
"NofVolDaughters",
"Volume %s not found.", volName);
640 Error(
"VolDaughterName",
"Volume %s not found.", volName);
646 Error(
"VolDaughterName",
"Volume %s Index out of limits", volName);
665 Error(
"VolDaughterName",
"Volume %s not found.", volName);
671 Error(
"VolDaughterName",
"Volume %s Index out of limits", volName);
688 Error(
"VolId2Mate",
"volume with id=%d does not exist",
id);
754 TClass *class_type = shape->IsA();
894 for (
Int_t i=0; i<nz; i++) {
895 par.
AddAt(z[i], 4+3*i);
896 par.
AddAt(rmin[i], 4+3*i+1);
897 par.
AddAt(rmax[i], 4+3*i+2);
913 for (
Int_t i=0; i<nz; i++) {
914 par.
AddAt(z[i], 3+3*i);
915 par.
AddAt(rmin[i], 3+3*i+1);
916 par.
AddAt(rmax[i], 3+3*i+2);
983 Error(
"GetShape",
"Getting shape parameters for shape %s not implemented", shape->
ClassName());
1064 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.
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)
kmed tracking medium number assigned name tracking medium name nmat material number isvol sensitive v...
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.
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)
Defines a Material.
virtual Double_t GetA() const
virtual Double_t GetRmax() const
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)
NAME Volume name SHAPE Volume type NUMED Tracking medium number NPAR Number of shape parameters UPAR ...
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
virtual void Gsord(const char *name, Int_t iax)
Flags volume CHNAME whose contents will have to be ordered along axis IAX, by setting the search flag...
virtual Double_t GetDX() const
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'.
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.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual Double_t GetRmin() const
Double_t GetTheta2() const
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
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)
Returns the Transformation matrix between the volume specified by the path volumePath and the Top or ...
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
Converts Float_t* array to Double_t*, !! The new array has to be deleted by user. ...
static TGeoMCGeometry * fgInstance
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 pointing to the volume called 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)
Defines mixture OR COMPOUND IMAT as composed by THE BASIC NLMAT materials defined by arrays A...
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
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)
krot rotation matrix number assigned theta1 polar angle for axis i phi1 azimuthal angle for axis i th...
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